我正在尝试编写一个运算符来将二进制数转换为double
但是出错了。
这是我的代码:
double operator double*()(BinaryOctet b) {
double double_b = (double)binaryToInt(b);
return double_b;
}
答案 0 :(得分:1)
您忘记了一件非常重要的事情:转换运算符必须成为您要转换的类的成员。
不可能有非成员转换运算符。或转换运算符,它接受不相关类型的参数。
所以要正确,它应该是BinaryOctet
类的成员:
class BinaryOctet
{
public:
// ...
operator double()
{
return ...;
}
};
如果BinaryOctet
不是一个类(或struct
),那么您就无法拥有转换运算符。
我建议查看例如this operator overloading reference用于一般运算符重载详细信息,this user-conversion operator reference用于了解有关转换运算符的更多详细信息。
另请注意,转换运算符没有返回类型。它由编译器推导出来。