0

別のクラスのメンバー変数を持つクラスがあります。

class MeasurementUnit {
private:
    MeasurementMultiplier _multiplier;

MeasurementMultiplier実際にはparameters で初期化するので、デフォルトのコンストラクターは必要ありませんが、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

デフォルトのコンストラクターを必要としないようにすることはできますか?

4

2 に答える 2

6

class のすべてのコンストラクターで、初期化子リストでMeasurementUnitメンバー変数を初期化する必要があります。_multiplier例:

MeasurementUnit::MeasurementUnit()
  : _multiplier(1,2,3)
{}
于 2013-03-14T21:31:37.263 に答える
1

MIL を使用 - メンバー初期化リスト MIL

于 2013-03-14T21:33:55.993 に答える