我有一个名为Foo
的类,其中一个构造函数需要参数,另一个类Bar
带有Foo
个私有变量
class Foo
{
public:
Foo(string);
}
class Bar
{
public:
Bar() { this->foo = Foo("test") }
private:
Foo foo;
}
然而,当我尝试编译它时,我得到一个编译错误,没有Foo::Foo()
构造函数。看起来类foo
中的私有变量Bar
在获取构造函数中指定的值之前被初始化。
如何在构造函数中等待初始化的私有foo
变量?
答案 0 :(得分:9)
您需要使用初始化列表。如果不这样做,您的代码将调用该对象的默认构造函数。
Bar::Bar() : foo("test") {
// stuff
}
答案 1 :(得分:7)
使用初始化列表:
Bar() : foo("test") {}
BTW,在C ++中,使用this->
的原因很少(并且通常表明存在其他问题)。