在以下c ++程序中:
class matrix {
public:
int n;
double **x;
matrix(int n) : n(n) {
x=new double[n][n];
for (int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
x[i][j]=0;
}
}
}
...
我收到以下错误:“'n'不能出现在常量表达式中”。 由于我对cpp相对较新,我真的不知道为什么会出现这种错误(特别是因为我对一个名为vector的类做了几乎完全相同的事情,并且根本就没有问题)以及如何修复它。 我真的很感激任何帮助。
答案 0 :(得分:2)
在此表达式中
x=new double[n][n];
除最左边之外的所有尺寸都应是常数表达式。
正确的方法是
x = new double *[n];
for ( int i = 0; i < n; i++ ) x[i] = new double[n];
for (int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
x[i][j]=0;
}
}
或者如果您的编译器支持C ++ 2011,那么无需在循环中进行显式初始化就可以更简单地完成它
x = new double *[n];
for ( int i = 0; i < n; i++ ) x[i] = new double[n] {};