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。很高兴你能帮忙