2011-11-07 127 views
0

我有一个Foo类,只有构造函数Foo(int length)。我还会与成员Foo myFoo = myFoo(100)共同上课'Bar',我会如何初始化?如果它在Foo构造器中没有长度参数,我只能初始化它。用C++中的参数初始化一个成员变量

在此先感谢

+1

请显示代码。 –

回答

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); 
}; 

但是你的编译器可能不支持呢,还是只用特殊标志支持。

4

此问题已经多次出现。您可以使用构造函数初始化列表来做到这一点:

class Bar 
{ 
    Bar() : myFoo(100) {} 

    Foo myFoo; 
}; 

这些初始化列表让你调用构造函数的基类,以及为会员,并初始化它们预期的方式。