Вам нужен указатель на указатель, чтобы создать [нормальный] 2-мерный массив так
int ** const e;
Тогда конструктор может работать как:
e = (int**) malloc(sizeof(int**) * a);
for(int i=0;i<a;++i) {
e[i] = (int*) malloc(sizeof(int*) * b);
}
Ваша следующая проблема «как для инициализации констант ». Для этого, вы можете обратиться к ответу здесь: how to initialize const member variable in a class C++
осуществить это, поместите код inittializer в функции:
initConstArray(const int** const a, int r, int c) {
e = (int**) malloc(sizeof(int**) * a);
for(int i=0;i<r;++i) {
e[i] = (int*) malloc(sizeof(int*) * b);
for(int j = 0;j < c; ++j) {
e[i][j] = a[i][j];
}
и вызвать эту функцию из списка конструктор инициализатора:
A(int **a, int r, int c) : initConstArray(a, r, c) {
}
если вы хотите какой-либо скомпилированную матрицу функциональности заглянуть в библиотеки, такие как Эйген – chris
Но в этом проекте я не хочу использовать любая библиотека – Cieja
'memset' - ваш друг, предполагая, что вам действительно просто нужен« пустой »(который, кстати, не имеет никакого реального смысла в разработке программного обеспечения). Кроме того, поскольку слово 'empty' появляется в заголовке вопроса, но не в теле, я понятия не имею, о чем вы действительно просите. –