具有数组类型的C++add_pointer模板

C++ add_pointer template with array type

本文关键字:pointer 模板 C++add 数组 类型      更新时间:2023-10-16

我想使用C++<type_traits>标头中的std::add_pointer<type>模板来构造指向数组类型的指针。

但是,以下生成错误

double *y[2];
std::add_pointer<double[2]>::type x;
y = x;  // generates error

SDK 7.1附带的MSVC C++编译器显示

错误C2440:"=":无法从"double(*)[2]"转换为"double*[2] '没有到数组类型的转换,尽管有到引用或指针的转换阵列

我在这里想念什么?

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

y[i][0]y[i][1]

yx在这里的类型不相同。

正如错误消息所说,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;

实时