【发布时间】:2011-04-17 10:20:15
【问题描述】:
考虑:
struct A {
A (int);
A (const A &);
};
struct B {
A foo [2];
B (const A & x, const A & y)
: foo {x, y} /* HERE IS THE PROBLEM */
{}
};
由于我在 GCC4.3 中使用 C++0x 支持,因此我期待它能够工作,据称它支持初始化列表。不开心。
我有一个没有默认构造函数的 A 类。这是没有商量余地的。默认后分配不是一种选择。
我正在尝试创建使用 A 的 B。B::foo 可能不是 std::vector。
如何在B(...) 中初始化B::foo,只构造一次它的元素?
目前,我正在考虑将 B 替换为
struct B {
A foo_a;
B foo_b;
A * foo () {
assert ((&foo_b) - *&foo_a) == 1);
return &foo_a;
}
B (const A & x, const A & y) : foo_a(x), foo_b(y) {}
};
或者甚至使用 char foo [2*sizeof(A)] 和新位置——YUK!
肯定有合适的方法来做到这一点?
【问题讨论】:
-
只是让您知道我使用“0101”按钮更好地格式化了您的代码块。
标签: c++ arrays constructor initialization default