从类到双精度的隐式转换

use*_*460 2 c++ double casting operator-overloading type-conversion

是否可以将给定类隐式转换为基本类型?特别是一个双.

如果我有课:

class Angle
{
    double value;

    Angle(double init_value = 0.0) : value(init_value) {}

    double get_value() const {return (value);}
}
Run Code Online (Sandbox Code Playgroud)

无论如何,我可以调用一个函数,比如std :: sin(),并提供一个Angle类对象,而不是每次调用都明确地得出angle的值?例如:

Angle theta(180.0);
double result = std::sin(theta);
Run Code Online (Sandbox Code Playgroud)

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

Angle theta(180.0);
double result = std::sin(theta.get_value());
Run Code Online (Sandbox Code Playgroud)

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

感谢您的任何见解.

Vla*_*cow 5

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

class Angle
{
    //...
    operator double() const { return get_value(); }
};
Run Code Online (Sandbox Code Playgroud)