是否可以使用朋友?
class MyClass
{
private:
int myInteger;
float myFloat;
public:
void SetData(int a, float b)
{
myInteger = a;
myFloat = b;
}
operator int();
friend operator float(MyClass & );
};
MyClass :: operator int()
{
return myInteger;
}
operator float(MyClass & obj)
{
return obj.myFloat;
}
此代码无法编译。如何以正确的方式做到这一点?
答案 0 :(得分:2)
VS2008说:
error C2801: 'operator float' must be a non-static member
为什么不让op浮动成员?
operator float(){ return myFloat;}
答案 1 :(得分:1)
如果重载操作符不适合您,请考虑使用命名函数:
float ToFloat(MyClass & obj)
{
return obj.myFloat;
}
这也可以避免隐式转换...但我想如果你计划重载运算符,你的意图是允许隐式转换。