У меня болит мозг ... как правильно инициализировать массив объектов в C ++?
пример без массива:
struct Foo { Foo(int x) { /* ... */ } };
struct Bar {
Foo foo;
Bar() : foo(4) {}
};
Пример массива:
struct Foo { Foo(int x) { /* ... */ } };
struct Baz {
Foo foo[3];
// ??? I know the following syntax is wrong, but what's correct?
Baz() : foo[0](4), foo[1](5), foo[2](6) {}
};
edit: Дикие и сумасшедшие идеи обходного пути приветствуются, но они не помогут мне в моем случае. Я работаю над встроенным процессором, где std :: vector и другие конструкции STL недоступны, и очевидным обходным решением является создание конструктора по умолчанию и наличие явного init()
метода, который можно вызывать после времени создания, Мне не нужно использовать инициализаторы вообще. (Это один из тех случаев, когда меня избаловало ключевое слово Java final
+ гибкость с конструкторами.)