我正在尝试在 C++ 中对具有类型名的结构进行前向声明。像这样的事情是完全有效的:
typedef struct foo foo;
struct foo{
int f;
};
Run Code Online (Sandbox Code Playgroud)
我的结构只是有一个类型名,所以我尝试了这个:
template <typename T>
typedef struct mV<T> mV;
template <typename T>
struct mV{
//contents of struct
};
Run Code Online (Sandbox Code Playgroud)
但是,我随后收到错误a typedef cannot be a template、explicit specialization of undeclared template struct和redefinition of 'mV' as different kind of symbol。我该如何解决这个问题?
因此,如果您想共享shared_ptr过去元素中的所有内容x,您可以编写如下内容:
int main(){
std::shared_ptr<float[]> _vals = std::make_unique<float[]>(70);
for(uint32_t i = 0; i < 10; ++i)
_vals[i] = i;
//range from 2 - end of _vals
// x = 2 in this case
std::shared_ptr<float[]> _partial(_vals, &_vals[2]);
for(uint32_t i = 0; i < 5; ++i)
std::cout<<_partial[i]<<" ";
std::cout<<std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
所以输出将是:
2 3 4 5 6
Run Code Online (Sandbox Code Playgroud)
所以_partial会指向从_vals.get() + 2到 的结尾_vals。但是,如果我想让它指向,例如(2-5), (70-end),我想知道是否可以分配地址来_partial完成此操作,该怎么办?例如,如果这有效:
2 3 4 5 6
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试编译它,我会收到错误: …