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

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()构造函数.看起来类中的私有变量fooBar获取构造函数中指定的值之前被初始化.

我怎么能有一个foo等待在我的构造函数中初始化的私有变量?

Don*_*ner 9

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

Bar::Bar() : foo("test") {
   // stuff
}
Run Code Online (Sandbox Code Playgroud)


Jer*_*fin 7

使用初始化列表:

Bar() : foo("test") {}
Run Code Online (Sandbox Code Playgroud)

顺便说一下,在C++中使用的原因this->很少(并且经常表明其他问题).