【发布时间】:2010-02-26 17:36:18
【问题描述】:
如果一个类只有一个构造函数,一个参数,如何声明一个数组?我知道在这种情况下推荐使用向量。例如,如果我有一个类
class Foo{
public:
Foo(int i) {}
}
如何声明包含 10000 个 Foo 对象的数组或向量?
【问题讨论】:
-
请不要从答案中得出结论,如果您不立即对其进行初始化,则无法引用该数组。你总是可以做
extern Foo foo[100];然后已经引用了数组,只要你稍后定义它并且然后它需要所有的初始化器:) -
Dagnammit,我输入了关于
extern的相同评论,但我认为我应该在发布之前检查它是否真的有效,而你打败了我。我认为你甚至不需要定义它,只要你不引用它。 -
为什么要声明数组而不是向量?
-
我刚刚对 C++0x GCC 感到很开心,并为
std::array提出了一种机制:codepad.org/O4bP8KO9 :) 我怀疑这是最接近的机制 - 但至少它是一个原生的真实数组。 @David,因为vector是动态分配的,所以我认为这太过分了。在带有键盘代码的 C++0x 中,我们甚至可以constexpr所有涉及的函数(如果我们避免使用引用参数),并受益于静态初始化以避免初始化顺序失败,我想。跨度> -
请注意,声明数组不会有问题。 定义很难。 (见这里:stackoverflow.com/questions/1410563)