我的班级需要一个std::vector<MyType> my_list
有五个元素的成员。MyType
s 应该使用它们的默认构造函数初始化。我必须为这个类编写一个显式的构造函数,还是可以不用它来解决?
问问题
66 次
2 回答
2
在 C++11 中,您可以执行以下操作并通过隐式生成的构造函数正确初始化向量:
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)) {}
};
于 2012-06-13T17:00:25.307 回答
1
你需要自己写。编译器生成的构造函数将默认初始化my_list
,这意味着它将为空。你需要这样的东西:
class MyClass {
std::vector<MyType> my_list;
MyClass() : my_list(5) {}
};
于 2012-06-13T17:00:05.180 回答