我正在尝试让我的Class2
有一个Class1
的实例,但我不知道将构造函数参数放在哪里。我有以下代码:
class Class1 {
public: Class1(std::string name) { myName = name; }
private: std::string myName;
};
class Class2 {
private:
Class1 player("Steve");
};
产生错误:
prog.cpp:12:20: error: expected identifier before string constant Class1 player("Steve"); ^~~~~~~ prog.cpp:12:20: error: expected ‘,’ or ‘...’ before string constant
我如何正确构建我的课程?
答案 0 :(得分:4)
Class1 player
是Class2
的成员变量。 Class1
没有默认构造函数,因为您声明了一个采用string
的构造函数。因此,您唯一的选择是Class2
的构造函数的初始化列表:
class Class2 {
public: Class2() : player("Steve") {} // Initializer list
private: Class1 player;
};
或者如果您使用默认成员初始化程序的c ++ 11:
class Class2 {
private: Class1 player{"Steve"};
};