не может появляться в постоянном выражении

В следующей программе на 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, я действительно не знаю, почему происходит эта ошибка (особенно потому, что я сделал почти то же самое с классом, называемым вектором, и там вообще не было проблем) и как ее исправить.
Я был бы очень признателен за любую помощь.

0

Решение

В этом выражении

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] {};
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]