重载一个简单的=运算符

时间:2013-04-07 20:38:39

标签: c++ string class overloading operator-keyword

我正在尝试将我的部分课程重载到string,我无法让重载工作。或者,我也会有long long重载,但我只是假设它与long long而不是string相同。

class FileData
{
public:
    string extensions_;                 
    unsigned long long containsBytes_;      
};

string& operator = (string& s , FileData& fd)
{
    s= fd.extensions_;
    return s;
}

string extName = fileVector[0];

我一直得到的错误是ERROR:'operator ='必须是成员函数。 我也尝试过使用istream但是也没用。

有人知道我怎么能这样做吗?

2 个答案:

答案 0 :(得分:4)

为了能够从您的班级分配字符串,您需要一个转换运算符

class FileData
{
public:

    // Conversion to string
    operator string() const {return extensions_;}

    string extensions_;                 
    unsigned long long containsBytes_;      
};

您只能将赋值运算符重载为类的成员,以便将分配给该类的对象。

答案 1 :(得分:3)

你不能重载std :: string的operator =。你可能想要的是一个演员:

    class FileData
    {
    public:
        string extensions_;
        unsigned long long containsBytes_;

        operator string()
        {
            return extensions_;
        }
    }