我脑子有点抽...如何在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) {}
};
编辑: 我欢迎各种奇思妙想的解决方案,但是它们在我的情况下没有用。我正在处理一个嵌入式处理器,在那儿 std::vector 和其他STL结构不可用,并且明显的解决方法是创建一个默认构造函数并拥有一个显式的 init()
方法,可以在构造后调用,这样我就不必使用初始化程序了。(这是那些被Java的 final
关键字和构造函数灵活性宠坏了的情况之一)。
struct
替代class
不是更容易吗?我发现编译通过的代码更容易学习 ;-) - Steve Jessop