Pet*_*rdk 4 c++ variables constructor private
我有一个类,Foo带有一个需要参数的构造函数,另一个类Bar带有一个Foo私有变量
class Foo
{
public:
Foo(string);
}
class Bar
{
public:
Bar() { this->foo = Foo("test") }
private:
Foo foo;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试编译它时,我得到一个编译错误,没有Foo::Foo()构造函数.看起来类中的私有变量foo在Bar获取构造函数中指定的值之前被初始化.
我怎么能有一个foo等待在我的构造函数中初始化的私有变量?
您需要使用初始化列表.如果不这样做,您的代码将调用该对象的默认构造函数.
Bar::Bar() : foo("test") {
// stuff
}
Run Code Online (Sandbox Code Playgroud)
使用初始化列表:
Bar() : foo("test") {}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,在C++中使用的原因this->很少(并且经常表明其他问题).