将C语言中的运算符转换为Double

时间:2018-05-08 07:53:21

标签: c++ casting operator-keyword

我正在尝试编写一个运算符来将二进制数转换为double但是出错了。

这是我的代码:

double operator double*()(BinaryOctet b) {
    double double_b = (double)binaryToInt(b);

    return double_b;
}

1 个答案:

答案 0 :(得分:1)

您忘记了一件非常重要的事情:转换运算符必须成为您要转换的类的成员。

不可能有非成员转换运算符。或转换运算符,它接受不相关类型的参数。

所以要正确,它应该是BinaryOctet类的成员:

class BinaryOctet
{
public:
    // ...
    operator double()
    {
        return ...;
    }
};

如果BinaryOctet不是一个类(或struct),那么您就无法拥有转换运算符。

我建议查看例如this operator overloading reference用于一般运算符重载详细信息,this user-conversion operator reference用于了解有关转换运算符的更多详细信息。

另请注意,转换运算符没有返回类型。它由编译器推导出来。