代码之家  ›  专栏  ›  技术社区  ›  Zakarya Boudouar

将C二进制中的运算符转换为双精度[闭合]

  •  -3
  • Zakarya Boudouar  · 技术社区  · 6 年前

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

    这是我的代码:

    double operator double*()(BinaryOctet b) {
        double double_b = (double)binaryToInt(b);
    
        return double_b;
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Some programmer dude    6 年前

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

    不可能有非成员转换运算符。或为不相关类型获取参数的转换运算符。

    因此,为了正确起见,它应该是 BinaryOctet 类别:

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

    如果 二进制八位组 不是类(或 struct )那么就不能有转换运算符。

    我建议仔细查看,例如。 this operator overloading reference 对于一般运算符重载详细信息,以及 this user-conversion operator reference 有关转换运算符的详细信息。


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