Мне было просто интересно, может ли член массива класса быть создан сразу после создания класса:
class C
{
public:
C(int a) : i(a) {}
private:
int i;
};
class D
{
public:
D() : a(5, 8) {}
D(int m, int n) : a(m,n) {}
private:
C a[2];
};
Насколько я мог судить, создание массива в Конструкторе, например, в C ++, невозможно. В качестве альтернативы, элемент массива может быть инициализирован в блоке Constructor следующим образом.
class D
{
public:
D() {
a[0] = 5;
a[1] = 8;
}
D(int m, int n) {
a[0] = m;
a[1] = n;
}
private:
C a[2];
};
Но тогда, это больше не создание массива, а присвоение массива. Элементы массива создаются компилятором автоматически через конструктор по умолчанию, а затем они вручную присваиваются определенным значениям в блоке C'tor. Что раздражает; для такого обходного пути класс C должен предлагать конструктор по умолчанию.
У кого-нибудь есть идеи, которые могут помочь мне в создании элементов массива при конструировании. Я знаю, что использование std :: vector может быть решением, но из-за условий проекта мне не разрешено использовать любую стандартную библиотеку, библиотеку Boost или стороннюю.