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