我有一个类Thing
,它没有默认的构造函数。
现在我们定义另一个类,这个类必须一次性初始化数组元素,因为没有默认的构造函数,所以不能进行后期赋值。所以我们有:
class TwoThings
{
public:
Thing things[2];
TwoThings() : things({Thing("thing 1"),Thing("thing 2")})
{
}
}
这是正确的方式吗?
GCC可以成功编译它,而Clang则不能,并且指出应该使用“初始化列表”。我尝试了几种替代方法,如双括号{{ ... }}
等,但无法找到与Clang编译等效的解决方案。
如何在Clang中初始化没有默认构造函数的数组?
std::pair<Thing,Thing>
或者std::vector<Thing>
。 - TartanLlamastd::vector
也需要具有默认构造函数的元素? - dronusreserve
和push_back
来代替使用resize
,以防止默认构造任何内容。 - TartanLlama