将隐式float转换为其他类型
Convert implicitly float to other type
例如,我有一个名为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;
}
我问这个问题是为了弄清楚如何隐式地从Length
转换到float
,但我忘记了或没有问如何向后转换。向后转换的方法将调用以下语句:
valueInMeter_ = valueInFloat_ / METER_TO_FLOAT_RATIO; //valueInFloat_ is the parameter
我可以想到两种方法:
-
使用转换构造函数
Length(float val);
-
使用重载赋值操作符
Length& operator=(float val);
如果添加了转换构造函数,则不需要赋值操作符
相关文章:
- 泛型枚举和其他类型的重载模板函数
- 将结构时间规范添加到类(似乎没有其他类型的)会导致EXEC_BAD_ACCESS
- 严格的别名是否会阻止您通过其他类型写入 char 数组?
- 使用字节向量作为其他类型的原始存储是一种好的做法吗
- 区分键盘记录器中的密码和其他类型的键盘输入
- 对于其他类型的void_t,是否有标准的概括
- 如何根据枚举参数返回其他类型
- 扣除其他类型的依赖类型
- 为什么可以将其他类型变量用作C 中常量参考参数参数的参数
- 重载流<<运算符,用于指针/共享指针和其他类型的
- 如何有效地将底层数据从 std::string 移动到其他类型的变量?
- 如何使用 std::shared_ptr<void> 和其他类型的 std::shared_ptr 进行函数重载?
- 是否有类型特征显示一种类型是否可能包含其他类型的值
- static_cast到其他类型,然后移动结果
- 是其他类型的不同类型的初始化衍生物,或者它们是完全分开的
- 我如何创建一种类型,就像其他类型一样
- 在模板类中,如何使用其他类型名称定义函数
- 如果 JVM 的参数是从其他类型的转换而来的,JNI 找不到该类
- 是否有预处理器宏可以让我知道应用程序是控制台类型还是其他类型
- C++ 将部分数组(在某些偏移量)转换为其他类型