4

我的代码有问题。我有一些关于类的输入,nmax 和 mmax。这些在标题中定义为

int nmax;
int mmax;

然后我有一些数组,在标题中定义为

double* Nline;
double** NMline;

然后我想在主程序中分配它们。首先,我从输入中为 nmax 和 max 分配一个值

nmax = nmax_in;
mmax = mmax_in;

然后我分配数组

Nline = new double [nmax];
NMline = new double [nmax][mmax];

问题是,一维数组是这样分配的。但二维数组不是 - 编译器写道:表达式必须有一个常量值

为什么分配了 NLine 而没有分配 NMline?

我理解,但我不知道如何在我的程序中执行此操作,以及为什么对于一维数组,这种分配是可以的。非常感谢您的帮助

4

1 回答 1

7
double** NMline;

将声明指向指针数组的指针,它不会声明二维数组。您需要首先为指针数组(指向行的指针)分配数据:

NMline = new double*[nmax];

然后初始化每一行:

for(int i = 0; i < nmax; i++)
       NMline[i] = new double[mmax];

不要忘记先删除所有行,然后再删除NMline本身:

for(int i = 0; i < nmax; i++)
       delete [] NMline[i];
delete [] NMline;
于 2013-09-17T10:35:40.267 回答