Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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 constructor?

like image 703
Peterdk Avatar asked Dec 05 '22 02:12

Peterdk


1 Answers

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
}
like image 171
Donald Miner Avatar answered Dec 07 '22 16:12

Donald Miner