是否可以使用友元函数将类型转换为基本类型?

时间:2013-12-13 14:04:56

标签: c++ type-conversion

是否可以使用朋友?

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;
}

此代码无法编译。如何以正确的方式做到这一点?

2 个答案:

答案 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;
}

这也可以避免隐式转换...但我想如果你计划重载运算符,你的意图是允许隐式转换。