私有变量只需要在构造函数中初始化。怎么样?

时间:2010-07-19 20:11:26

标签: c++ variables constructor private

我有一个名为Foo的类,其中一个构造函数需要参数,另一个类Bar带有Foo个私有变量

 class Foo 
 {
      public:
      Foo(string);
 }

 class Bar
 {
      public:
      Bar() { this->foo = Foo("test") }

      private:
      Foo foo;
 }

然而,当我尝试编译它时,我得到一个编译错误,没有Foo::Foo()构造函数。看起来类foo中的私有变量Bar在获取构造函数中指定的值之前被初始化。

如何在构造函数中等待初始化的私有foo变量?

2 个答案:

答案 0 :(得分:9)

您需要使用初始化列表。如果不这样做,您的代码将调用该对象的默认构造函数。

Bar::Bar() : foo("test") {
   // stuff
}

答案 1 :(得分:7)

使用初始化列表:

Bar() : foo("test") {}
BTW,在C ++中,使用this->的原因很少(并且通常表明存在其他问题)。