У меня возникает судорога мозга... как я могу правильно инициализировать массив объектов на С++?
пример без массива:
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 correct?
Baz() : foo[0](4), foo[1](5), foo[2](6) {}
};
изменить: Дикие и сумасшедшие обходные идеи оценены, но они не помогут мне в моем случае. Я работаю над встроенным процессором, где std::vector и другие конструкторы STL недоступны, и очевидным обходным решением является создание конструктора по умолчанию и наличие явного метода init()
, который можно вызывать после времени построения, так что я не нужно использовать инициализаторы вообще. (Это один из тех случаев, когда я испортил Java final
ключевое слово + гибкость с помощью конструкторов.)