我的课程Foo
只有一个构造函数Foo(int length)
。我还有一个班级'Bar'和成员Foo myFoo = myFoo(100)
我将如何初始化它?如果Foo constructer中没有长度参数,我只能初始化它。
提前致谢
答案 0 :(得分:4)
这个问题已经出现过很多次了。您使用构造函数初始化列表来执行此操作:
class Bar
{
Bar() : myFoo( 100 ) {}
Foo myFoo;
};
这些初始化列表允许您为基类和成员调用构造函数,并且是初始化它们的预期方法。
答案 1 :(得分:3)
Bar::Bar()
: myFoo(100) {
// constructor code
}
答案 2 :(得分:0)
我不确定我是否理解正确,但通常会在构造函数初始化列表中初始化成员:
class Bar
{
public:
Bar();
private:
Foo myFoo;
};
Bar::Bar()
// The following initializes Foo
: Foo(100)
// constructor body
{
}
请注意,如果Bar
有多个构造函数,则必须在每个构造函数中初始化myFoo
。
C ++ 11直接在成员声明中添加了初始化,如下所示:
class Bar
{
Foo myFoo = Foo(100);
};
但是你的编译器可能还不支持它,或者只支持特殊标志。