2013-03-14 131 views
0

我有一个类与其他类的成员变量:避免默认的构造函数

class MeasurementUnit { 
private: 
    MeasurementMultiplier _multiplier; 

其实我不需要为MeasurementMultiplier默认构造函数,因为实际上我将与参数MeasurementMultiplier(a,b,c)初始化,和我会 - 但不能直接:

C2864: 'MeasurementUnit::_multiplier' : 
only static const integral data members can be initialized within a class 

所以我需要默认的构造函数,没有它不编译error: C2512: 'MeasurementUnit' : no appropriate default constructor available

我可以避免需要默认的构造函数吗?

+0

使用的初始化列表或得到支持C++ 11类成员初始化的编译器。 – chris 2013-03-14 21:31:33

+0

http://www.learncpp.com/cpp-tutorial/101-constructor-initialization-lists/ – 2013-03-14 21:31:39

+4

您可能需要重新说明这个问题?我一个人不理解它。 – 2013-03-14 21:31:41

回答

6

在您的类MeasurementUnit的所有构造函数中,您需要在初始化程序列表中初始化成员变量_multiplier。例如:

MeasurementUnit::MeasurementUnit() 
    : _multiplier(1,2,3) 
{} 
+0

对不起,我不明白。通过这样做你有一个默认的构造函数,这是我想要避免的。 – 2013-03-14 21:45:53

+1

@HorstWalter:在这种情况下,我不明白你的问题。 *我给出的*例子是指'MeasurementUnit'的(默认)构造函数,以避免需要默认的'MeasurementMultiplier'构造函数。如果这不是您想要的,请编辑并澄清问题。 – 2013-03-14 21:49:39

+0

对不起,我的错误,我很抱歉。你是对的。 – 2013-03-14 21:52:36