开发者

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

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

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜