【发布时间】:2009-12-22 06:58:36
【问题描述】:
我只是想知道,类的数组成员是否可以在类构造时立即创建:
class C
{
public:
C(int a) : i(a) {}
private:
int i;
};
class D
{
public:
D() : a(5, 8) {}
D(int m, int n) : a(m,n) {}
private:
C a[2];
};
据我谷歌搜索,在上面的构造函数中创建数组在 C++ 中是不可能的。或者,可以在 Constructor 块中初始化数组成员,如下所示。
class D
{
public:
D() {
a[0] = 5;
a[1] = 8;
}
D(int m, int n) {
a[0] = m;
a[1] = n;
}
private:
C a[2];
};
但是,它不再是数组创建,而是数组赋值。数组元素由编译器通过其默认构造函数自动创建,随后手动将它们分配给 C'tor 块中的特定值。什么烦人;对于这样的解决方法,C 类必须提供一个默认构造函数。
有任何想法可以帮助我在构造时创建数组成员。我知道使用 std::vector 可能是一种解决方案,但由于项目条件,我不允许使用任何标准、Boost 或第三方库。
【问题讨论】:
-
你必须等待C++0x,它允许这个。
标签: c++ arrays constructor