避免成员变量的默认构造函数 [英] Avoid default constructor for member variable
问题描述
我有一个类有另一个类的成员变量:
class MeasurementUnit {
private:
MeasurementMultiplier _multiplier;
其实我不需要默认的构造函数 MeasurementMultiplier
,因为实际上我将用参数 MeasurementMultiplier(a,b,c)
初始化,但我不能直接:
C2864:'MeasurementUnit :: _ multiplier':
只有静态const整数数据成员可以在类中初始化
$ c $所以我需要默认的构造函数,没有它不编译错误:C2512:'MeasurementUnit':没有适当的默认构造函数可用
我可以避免需要默认构造函数吗?
解决方案在您的类 MeasurementUnit
的所有构造函数中,您需要初始化成员变量 _multiplier
初始化列表。示例:
MeasurementUnit :: MeasurementUnit()
:_multiplier(1,2,3)
{ }
I have a class with a member variable of another class:
class MeasurementUnit {
private:
MeasurementMultiplier _multiplier;
Actually I would not need a default constructor for MeasurementMultiplier
, because actually I will initialize with parameters MeasurementMultiplier(a,b,c)
, and I would - but can't directly:
C2864: 'MeasurementUnit::_multiplier' :
only static const integral data members can be initialized within a class
So I need the default constructor, without it does not compile error: C2512: 'MeasurementUnit' : no appropriate default constructor available
Can I avoid needing the default constructor?
解决方案 In all constructors of your class MeasurementUnit
, you need to initialize the member variable _multiplier
in the initializer list. Example:
MeasurementUnit::MeasurementUnit()
: _multiplier(1,2,3)
{}
这篇关于避免成员变量的默认构造函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!