如何将空列表初始化为C ++类中的私有成员?我不想提示用户传入一个空列表,而只是在我创建一个新的类实例时创建一个。
header.h
class MyClass{
public:
MyClass();
private:
list<int> myList;
}
MyClass.cpp
MyClass::MyClass()
:myList(list<int>){}
这不是书面的,我在这里缺少什么?
答案 0 :(得分:8)
你不需要做任何事情。默认情况下,默认情况下会调用默认构造函数(如名称所示)。所以这已经是正确的了:
class MyClass{
public:
MyClass() { } // c++03
MyClass() = default; // c++11
private:
std::list<int> myList;
};
如果您希望在成员初始值设定项列表中仍然有myList
,则可以通过简单地提供空的parens来实现:
class MyClass{
public:
MyClass()
: myList() // explicitly use default ctor
{}
private:
std::list<int> myList;
};
答案 1 :(得分:2)
如果要选择提交用户定义的值,可以使用构造函数的初始化列表。此外,将列表默认为空内容。
class MyClass{
public:
MyClass(list<int> theList = {}) : myList(theList) {}
private:
list<int> myList;
}