【发布时间】:2017-01-05 03:42:49
【问题描述】:
对不起,如果这是一个菜鸟问题,但我目前正在学习 C++。我有一个接受多个参数的函数——我想在创建 3D int 数组时使用这些参数。
void* testFunction(int countX, int countY, int countZ)
{
const int NX = countX;
const int NY = countY;
const int NZ = countZ;
int* data_out = new int*[NX][NY][NZ];
// The above line throws the error on "NY" - expression must
// have a constant value
}
从各种帖子中我了解到您必须先分配数组,但我想我做错了?如何正确初始化多维数组。还有,为什么初始化需要指针?
【问题讨论】:
-
理想情况下,您应该使用一维
vector或unique_ptr<T[]>并使用数学伪造三个维度。 -
@MichaelO。您的建议仍然会引发相同的“表达式必须具有恒定值”错误。编辑:“const int NZ - countZ”是一种类型 - 我编辑了帖子以获得正确的“=”。
-
简答:你不能这样做。长答案:你不应该这样做。数组是错误的工具,因为它们不跟踪自己的大小。请参阅 NathanOliver 的评论。
-
@NathanOliver 你们有谁知道我在哪里可以找到一个简单的例子来说明这个概念吗?
-
@Roka545 见:stackoverflow.com/questions/3902648/…