【发布时间】:2017-10-12 23:55:53
【问题描述】:
是否可以将给定的类隐式转换为原始类型?特别是双倍。
如果我有课:
class Angle
{
double value;
Angle(double init_value = 0.0) : value(init_value) {}
double get_value() const {return (value);}
}
无论如何,我是否可以调用一个函数,例如 std::sin(),并提供一个 Angle 类的对象,而无需在每次调用时显式获取 angle 的值?例如:
Angle theta(180.0);
double result = std::sin(theta);
不必通过以下方式调用 std::sin:
Angle theta(180.0);
double result = std::sin(theta.get_value());
如果有一种方法可以实现这种所需的功能,我会假设它是通过赋值运算符的运算符重载。或者也许通过巧妙的方式定义移动/复制构造函数?
感谢您提供任何见解。
【问题讨论】:
-
你可以自己犯下
Angle例如double sin(Angle a) { return std::sin(a.get_value());} -
这是我到目前为止一直在做的事情,但是如果需要对每个需要双精度类型转换的函数都这样做,这可能会变得很麻烦。
标签: c++ casting type-conversion double operator-overloading