你能否重载双精度浮点数类型的 = 运算符?
我有以下代码:
double operator=(double a, Length b) {
return a = (b.getInches()/12+b.getFeet())*3.2808*0.9144;
}
它抛出以下错误:
'double operator=(double, Length)' must be a nonstatic member function
我做错了什么?
你能否重载双精度浮点数类型的 = 运算符?
我有以下代码:
double operator=(double a, Length b) {
return a = (b.getInches()/12+b.getFeet())*3.2808*0.9144;
}
'double operator=(double, Length)' must be a nonstatic member function
您无法为基本类型重载赋值操作符,但是您可以提供一个将Length
转换为double
的运算符,从而实现您想要的效果:
class Length {
...
public:
operator double() {
return (getInches()/12+getFeet())*3.2808*0.9144;
}
};
main() {
Length len = ...;
...
double d = len;
}
get_yard
成员函数,如下所示:class Length {
...
public:
double get_yards() {
return (getInches()+12*getFeet())/ 36.0;
}
};
3.0
。您也可以最后进行除法运算 - 参见上面修改后的表达式。
Length
可以转换为double
,以支持像Length a; double b; b = a;
这样的表达式。可转换意味着Length
具有operator double
。 - leemesLength
到double
的转换,如果是这样,你应该重载Length::operator double()
... - Massa