开发者

Private variable needs to be initialized only in constructor. How?

开发者 https://www.devze.com 2023-01-08 11:42 出处:网络
I have a class called Foo with a constructor that needs arguments, and a other class Bar with a Foo private variable

I have a class called Foo with a constructor that needs arguments, and a other class Bar with a Foo private variable

 class Foo 
 {
      public:
      Foo(string);
 }

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

      private:
      Foo foo;
 }

However, when I try to compile this, I get a compile error that there is no Foo::Foo() constructor. It looks like the private variable foo in class Bar gets initialized before getting a value assigned in the constructor.

How can I have a private foo variable that waits to gets initialized in my con开发者_开发问答structor?


You need to use an initializer list. If you don't, your code will call the default constructor for that object.

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


Use an initializer list:

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

BTW, in C++ reasons to use this-> are rare (and often indicate other problems).

0

精彩评论

暂无评论...
验证码 换一张
取 消