例如,我有一个名为Length
的课程。
class Length {
public:
static const float METER_TO_FLOAT_RATIO;
Length();
void setValue(float valueInMeter);
operator const float();
private:
float valueInMeter_;
};
const float METER_TO_FLOAT_RATIO= 10;
Length::Length() {}
Length::operator const float() {
return this->valueInMeter_ * METER_TO_FLOAT_RATIO;
}
void drawRectangle(Length width, Length height) {
//draw width * height rectangle
}
int main() {
Length width, height;
width = 20.0f;
height = 10.0f;
drawRectangle(width, height);
return 0;
}
我要求this question弄清楚如何从Length
隐式转换为float
,但我忘记了或者没有询问如何向后转换。向后转换的方法将调用此语句:
valueInMeter_ = valueInFloat_ / METER_TO_FLOAT_RATIO; //valueInFloat_ is the parameter
答案 0 :(得分:3)
我能想到两种方式:
使用转换构造函数。
Length(float val);
使用重载的赋值运算符。
Length& operator=(float val);
如果添加转换构造函数,则不需要赋值运算符。