Я просто изучаю C++. Я делаю практику со списком инициализации, поэтому я сделал класс, как этогоC++ Определить массив с константой int
class Matrix
{
public:
const int x_size;
const int y_size;
int *data;
Matrix(int _x_size, int _y_size) : x_size(_x_size), y_size(_y_size)
{
data = new int[y_size][x_size];
}
~Matrix()
{
delete[][] data;
}
};
int main(void)
{
Matrix A = Matrix(10, 10);
return 0;
}
И компилятор сказал как: размер массива в операторе нового должен быть постоянным. Итак, я искал и сказал, что это не постоянная времени компилятора.
Но очевидно, что я не могу использовать этот размер в качестве макросов здесь ... Затем. Как мне получить массив правильного размера с конструктором?
вы действительно должны использовать один, 1D массив, и добавить доступ с помощью двух индексов. Для упрощения вещей массив 1D может быть 'std :: vector'. –
juanchopanza
Забудьте о массивах, используйте std :: vector. –
Удалением будет 'delete [] data;' btw - форма 'delete []' охватывает массивы любого измерения. –