【发布时间】:2015-06-28 22:44:49
【问题描述】:
我有多个二维 96×60 std::string 数组。我正在尝试创建一个可以指向这些数组之一的指针。
数组看起来像这样:
std::string array1[96][60];
std::string array2[96][60];
我做的指针是这样的:
std::string *ptr_to_array[96][60];
如果我只声明指针,一切都会编译。但是当我尝试执行以下操作时
ptr_to_array = &array1;
我得到这个错误:
error: incompatible types in assignment of ‘std::string (*)[96][60]’ to ‘std::string* [96][60]’
对我来说,这两种类型似乎是相同的。
另外,从我读到的关于这个主题的内容来看,很多人建议使用std::array。我会,但是在尝试处理多维std::arrays 时,这似乎是一个比这更大的问题。我宁愿只修复我的 std::string 数组,但切换到 std::array 会更好或更容易吗?
【问题讨论】:
-
std::string (*)[96][60]是一个指向字符串数组的指针。std::string* [96][60]是一个指向字符串的指针数组。让它std::string (*ptr_to_array)[96][60]; -
@IgorTandetnik 那么我应该怎么写
ptr_to_array = &array1;这行呢?我想我必须以某种方式更改&array1。 -
不,你必须以某种方式更改
ptr_to_array。 -
@MSalters 为什么要引入以前没有的堆分配?
-
如果你有一个 C++11 编译器,你可以简单地使用
auto ptr_to_array = &array1;而不必弄乱指向数组语法的指针。
标签: c++ arrays pointers multidimensional-array