重载一个简单=运算(overloading a simple = operator)

2019-11-02 00:19发布

我想我的重载类的一部分,以一个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];

我不断收到的错误是错误:“操作符=”必须是成员函数。 我使用的IStream也试过,但也没有工作。

任何人都知道我怎么能去呢?

Answer 1:

为了能够分配给您的类的字符串,你需要一个转换操作符

class FileData
{
public:

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

    string extensions_;                 
    unsigned long long containsBytes_;      
};

你只能重载赋值运算符为你的类的成员,分配那类对象的目的。



Answer 2:

你不能重载的std :: string的运算符=。 你可能想要的是一个转换操作符:

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

        operator string()
        {
            return extensions_;
        }
    }


文章来源: overloading a simple = operator