Это был явный недостаток C ++ 03.В C ++ 11 это было исправлено, и теперь вы можете инициализировать все, в том числе массивы:
class Matrix
{
public:
Matrix() : n { } { }
protected:
static const unsigned int MAX_MATRIX = 20;
int n[MAX_MATRIX];
};
(В C ++ неприятный макрос препроцессора также не требуется).
В C++ 03, вы просто не можете инициализировать элемент массива, но вы можете установить его значение в теле конструктора, например, через std::fill(n, n + MAX_MATRIX, 0);
.
(Конечно, было бы намного лучше сказать std::array<int, MAX_MATRIX> n;
.)