隐式浮动转换为其他类型

时间:2015-07-09 03:49:52

标签: c++

例如,我有一个名为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

1 个答案:

答案 0 :(得分:3)

我能想到两种方式:

  1. 使用转换构造函数。

    Length(float val);
    
  2. 使用重载的赋值运算符。

    Length& operator=(float val);
    
  3. 如果添加转换构造函数,则不需要赋值运算符。