【发布时间】:2011-01-25 11:21:25
【问题描述】:
我脑筋急转弯...如何在 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不是更容易吗?我发现编译的代码更容易学习;-) -
当我将您的代码复制到我的编译器中时,我必须添加您遗漏的内容。因此,为了教学的简单性,您可能会考虑不要让人们在未来为您提供帮助。
-
史蒂夫/约翰:在这两个方面都是正确的。过失。
-
@Jason:买一个,非常宝贵。你也可以使用codepad.org 来写类似这样的代码。
标签: c++ constructor initializer