c++ - 从类到 double 的隐式转换

标签 c++ casting type-conversion double operator-overloading

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

如果我有一个类:

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(); }
};

关于c++ - 从类到 double 的隐式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46720569/

相关文章:

c++ - 递归回文

c++ - 为什么对常量临时值的本地引用似乎比定义它的方法生命周期更长?

c++ - C++ 数学特殊函数中的 std::complex<>:技术规范或提案

c++ - unsigned char 数组到 unsigned int 通过 memcpy 返回到 unsigned char 数组被反转

c++ - 这应该模棱两可吗? (隐式转换)

java - 如何在转换 JComboBox 之前检查它的类型?

c# - 是否可以将元素直接转换为数组?

c# - 将字符串转换为可空类型(int、double 等...)

c++ - 模板化时没有发生隐式转换

c++ - 关于 "casting"变量的快速建议?非常短的功能需要调整