0

在以下 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 的类做了几乎完全相同的事情,而且根本没有问题)以及如何修复它。我真的很感激任何帮助。

4

1 回答 1

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] {};
于 2013-12-01T14:47:16.297 回答