C++在类中初始化一个空列表

LBa*_*ish 2 c++ initialization class

如何将空列表初始化为C++类中的私有成员?我不想提示用户传入一个空列表,而只是在我创建一个新的类实例时创建一个.

header.h

class MyClass{
public:
    MyClass();
private:
    list<int> myList;
}
Run Code Online (Sandbox Code Playgroud)

MyClass.cpp

MyClass::MyClass()
    :myList(list<int>){}
Run Code Online (Sandbox Code Playgroud)

这不起作用,我在这里缺少什么?

Bar*_*rry 9

你不需要做任何事情.默认情况下,默认情况下会调用默认构造函数(如名称所示).所以这已经是正确的了:

class MyClass{
public:
    MyClass() { }         // c++03
    MyClass() = default; // c++11
private:
    std::list<int> myList;
};
Run Code Online (Sandbox Code Playgroud)

如果您仍希望myList在成员初始化列表中,您可以通过简单地提供空的parens来实现:

class MyClass{
public:
    MyClass()
    : myList() // explicitly use default ctor
   {}
private:
    std::list<int> myList;
};
Run Code Online (Sandbox Code Playgroud)