gpt4 book ai didi

c++ - 如何初始化没有默认构造函数的对象成员 std::array?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:45:34 24 4
gpt4 key购买 nike

这是我遇到问题的代码:

class Foo {
public:
Foo() :
memberArray{Bar(1), Bar(3), Bar(2)}
{}
struct Bar {
Bar(int param1) { }
};
private:
std::array<Bar,3> memberArray;
// Bar memberArray[3]; // Using a raw array like this instead compiles fine..
};

我正在使用 GCC 4.6.1,并针对 C++11 进行编译。我应该如何初始化我的 std::array?

最佳答案

array<T, N>实际上是一个结构体,全括号版本需要{{ .. }} (内部的用于 array<T, N> 对象的数组成员)。该规范不允许此处省略大括号。它只允许在表单声明中使用

Type var = { ... };

所以你必须使用全花括号语法

Foo() :
memberArray{{Bar(1), Bar(3), Bar(2)}}
{}

这不是 GCC 错误,而是规范要求的。

关于c++ - 如何初始化没有默认构造函数的对象成员 std::array?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8646428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com