【发布时间】:2013-08-18 20:43:15
【问题描述】:
当我将动态指针范围设置为 2 维或更高时,我一直运气不佳。例如,我想要一个指向二维数组的指针。我知道:
int A[3][4];
int (*P)[4] = A;
完全合法(即使我不完全理解为什么)。考虑到:
int *P = new int[4];
有效,我想:
int **P = new int[5][7];
也可以,但不是。此代码说明了错误:
Error: A value of type "(*)[7]" cannot be used to initialize an entity of
type "int **"
看到这一点,新部分变成了一个指向我创建的 7 个整数数组的指针:
int (*P)[4] = new int[7][4];
这确实有效,但这不是我想要完成的。通过这样做,我被限制为至少对任何后续维度使用一个常量值,但我希望它在运行时完全定义,因此是“动态的”。
我怎样才能让这个多维指针工作??
【问题讨论】:
-
别忘了删除它们
-
std::vector<std::unique_ptr<int>>
标签: c++ pointers dynamic c++11 multidimensional-array