C++;添加数组类型的\u指针模板 < >我想使用C++中的:ST::AddIdAccess指针/代码>模板,以构造一个数组类型的指针。

C++;添加数组类型的\u指针模板 < >我想使用C++中的:ST::AddIdAccess指针/代码>模板,以构造一个数组类型的指针。,c++,arrays,templates,typetraits,C++,Arrays,Templates,Typetraits,但是,以下代码会生成一个错误 double *y[2]; std::add_pointer<double[2]>::type x; y = x; // generates error double*y[2]; std::add_pointer::type x; y=x;//产生错误 用SDK 7.1装运的MSVC C++编译器表示< /P> 错误C2440:“=”:无法从“double(*)[2]”转换为“double” *[2]' 虽然存在到引用或指向的指针的转换,但没有到数

但是,以下代码会生成一个错误

double *y[2];
std::add_pointer<double[2]>::type x;
y = x;  // generates error
double*y[2];
std::add_pointer::type x;
y=x;//产生错误
用SDK 7.1装运的MSVC C++编译器表示< /P> 错误C2440:“=”:无法从“double(*)[2]”转换为“double” *[2]' 虽然存在到引用或指向的指针的转换,但没有到数组类型的转换 阵列

我错过了什么

编辑:我希望y是一个二维数组,其中一个维度为2,另一个变量为。 预期用途为


y[i][0]
y[i][1]
y
x
在这里没有相同的类型

正如错误消息所说,
y
是一个包含
double*
类型元素的数组
x
是指向类型为
double[2]
的数组的指针

您可以将
y
的类型更改为:

double (*y)[2];
std::add_pointer<double[2]>::type x = new double[2][2];
y = x;
// use y[0][0], y[0][1], y[1][0] ...
delete[] y;
double(*y)[2];
std::add_pointer::type x=new double[2][2];
y=x;
//使用y[0][0]、y[0][1]、y[1][0]。。。
删除[]y;

一个是指针数组,另一个是指向数组的指针。一点也不一样。好吧,我现在明白了:)。你当然是对的。它应该是双(*y)[2]。@AndreasH。您可以将
y
y[0][0]
y[0][1]
一起使用。。。查看我更新的实时演示。@AndreasH。很高兴你能帮忙