【发布时间】:2019-04-28 18:27:05
【问题描述】:
假设我们在 C++11 或更高版本中有以下类:
class MyClass {
private:
const std::array<SomeType, 100> myArray;
public:
explicit MyClass(std::array<SomeOtherType, 100> initArray);
};
假设 SomeType 类有一个以单个 SomeOtherType 作为参数的构造函数,是否可以在构造函数中使用列表初始化来初始化 const 成员数组?这样做的语法是什么?
显然,像这样直接初始化它是行不通的:
MyClass::MyClass(std::array<SomeOtherType, 100> initArray) :
myArray{initArray} {}
谢谢!
【问题讨论】:
-
您知道您的具有 const 成员的类不可复制吗?
-
如果您使用的是 c++11(或更高版本),请查找
std::initializer_list的文档。如果您使用 GCC 进行编译,您可能还会发现这篇文章很有用 stackoverflow.com/questions/8192185/… -
@Swordfish:感谢您的提醒——这对我当前的用例来说应该不是问题,但我会牢记这一点以备不时之需。
-
@HappyKeyboard:谢谢,我会看看 std::initializer_list。也很高兴知道 std::array 和 gcc 需要双花括号!
标签: c++ constructor constants stdarray list-initialization