gpt4 book ai didi

c++ - 可以使用隐式构造函数初始化具有此 vector 成员的类吗?

转载 作者:行者123 更新时间:2023-11-28 00:56:24 27 4
gpt4 key购买 nike

我的类(class)需要一名成员std::vector<MyType> my_list有五个元素。 MyType s 应该使用它们的默认构造函数进行初始化。我是否必须为此类编写一个显式构造函数,还是可以不用它来解决?

最佳答案

在 C++11 中,您可以执行以下操作并通过隐式生成的构造函数正确初始化 vector :

class foo {
std::vector<int> my_list { 1, 2, 3, 4, 5 };
};

没有C++11,你必须自己写:

template <typename T, std::size_t N>
T* begin(T(&arr)[N]) { return &arr[0]; }

template <typename T, std::size_t N>
T* end(T(&arr)[N]) { return &arr[0] + N; }

class foo {
// imitate initializer list
static const int default_list[] = { 1, 2, 3, 4, 5 };
std::vector<int> my_list;
public:
foo() : my_list(begin(default_list), end(default_list)) {}
};

关于c++ - 可以使用隐式构造函数初始化具有此 vector 成员的类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11019711/

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