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).
精彩评论