【问题标题】:Cast operator in C Binary to Double [closed]将 C 二进制中的运算符转换为 Double [关闭]
【发布时间】:2018-05-08 07:53:20
【问题描述】:

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

这是我的代码:

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

    return double_b;
}

【问题讨论】:

  • 欢迎来到 StackOverflow!如果您还没有这样做,请使用tour 并访问help centerHow to Ask 部分。询问时,提供足够的详细信息以帮助诊断问题很重要。由于您询问的是无法编译的代码,这意味着提供确切的错误消息,以及一段简短(但不是太短)的代码,该代码准确地给出了该错误。有关如何创建minimal reproducible example 的详细说明,请阅读。

标签: c++ casting operator-keyword


【解决方案1】:

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

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

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

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

如果BinaryOctet 不是类(或struct),则不能有转换运算符。

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


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

【讨论】:

  • 老实说,我不会回答这么低质量的问题。 OP 应该提供更多。
  • 不过,我们可以做得很好,但不放纵自己的努力
  • 在我看来,对初学者更好和提倡省力的问题并不是一回事。
  • 我不认为 MCVE 或显示错误在这种情况下会有很大的不同。很明显,OP 对转换运算符的误解达到了没有 MCVE 或错误列表可以帮助我们写出更好答案的程度。
猜你喜欢
  • 1970-01-01
  • 2017-05-14
  • 2014-07-08
  • 2011-09-15
  • 1970-01-01
  • 2014-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多