从类到双精度的隐式转换

Implicit conversion from class to double

本文关键字:转换 双精度      更新时间:2023-10-16

是否可以将给定的类隐式转换为基元类型?特别是双倍。

如果我有课程:

class Angle
{
    double value;
    Angle(double init_value = 0.0) : value(init_value) {}
    double get_value() const {return (value);}
}

无论如何,我可以调用一个函数,例如 std::sin(),并提供类 Angle 的对象,而无需在每次调用时显式获取角度的值?例如:

Angle theta(180.0);
double result = std::sin(theta);

而不必通过以下方式调用 std::sin:

Angle theta(180.0);
double result = std::sin(theta.get_value());

如果有一种方法可以实现此所需功能,我认为它将是通过赋值运算符的运算符重载来实现的。或者也许通过以巧妙的方式定义移动/复制构造函数?

感谢您的任何见解。

在类定义中,您可以定义转换运算符。例如

class Angle
{
    //...
    operator double() const { return get_value(); }
};