Я огляделся и нашел решение только для одной проблемы, которая конфликтует с другой.У меня есть класс A с некоторым константным членом и другими членами, которые должны быть инициализированы, класс B с некоторым конструктором и двумерный массив A
, например:
class A {
public:
A();
A(t, u);
const int x = 5;
private:
int _t;
int _u;
}
class B {
public:
B();
A a[50][500];
}
A::A() {
//nothing here
}
A::A(t, u) {
_t = t;
_u = u;
}
B::B() {
for (int i=0; i<50; i++)
for(int j=0; j<500; j++)
a[i][j] = A(i, j);
}
Теперь это не 'не работает, потому что A имеет константный член, поэтому назначение завершается неудачно, потому что все a уже построены по умолчанию, и, очевидно, я не хочу кодировать 25000 значений инициализатора в списке инициализатора члена B, так что об этом не может быть и речи.
Мне нужен инициализатор по умолчанию, потому что в противном случае конструктор B выдаст ошибку, из-за которой я не могу инициализировать массив по умолчанию, поэтому мне нужен какой-то способ переназначения массива вновь созданным объектом A. Как я могу выполнитьэто?