Для этого вам нужно динамическое распределение памяти. Я не буду возиться с указателями (new / delete), если вам явно не сказано. Как новичок вы, вероятно, должны использовать стандартные инструменты библиотеки шаблонов (STL):
#include <vector>
и использовать std::vector<std::vector<int>> Table
вместо int Table[3][3]
. Затем напишите конструктор следующим образом:
Matrix(std::size_t rows, std::size_t cols)
{
Table.resize(rows);
for (unsigned int i = 0; i < Table.size(); ++i)
Table[i].resize(cols);
}
Вы можете дополнительно сохранить размерность матрицы, но делать это не нужно, так как вы можете получить информацию из векторов. Замените жестко закодированные размеры во всех циклах соответствующими динамическими размерами (сохраненными или извлеченными из векторов). Например:
Matrix& operator +(Matrix& a, Matrix b)
{
unsigned int rows = a.Table.size();
unsigned int cols = a.Table[0].size();
for (unsigned int i = 0; i < rows; i++)
for (unsigned int j = 0; j < cols; j++)
a.Table[i][j] += b.Table[i][j];
return a;
}
Однако этот вектор векторов не очень эффективен. Лучше было бы одного вектора, но я думаю, для новичка это нормально.
Привет