重载简单的=操作符

overloading a simple = operator

本文关键字:操作符 简单 重载      更新时间:2023-10-16

我正试图将我的类的一部分重载到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,但也不起作用。

有人知道我该怎么做吗?

为了能够赋值给类中的字符串,您需要一个转换操作符:

class FileData
{
public:
    // Conversion to string
    operator string() const {return extensions_;}
    string extensions_;                 
    unsigned long long containsBytes_;      
};

只能将赋值操作符重载为类的成员,以便将赋值给该类的对象。

不能重载std::string的操作符=。您可能需要的是强制转换操作符:

    class FileData
    {
    public:
        string extensions_;
        unsigned long long containsBytes_;
        operator string()
        {
            return extensions_;
        }
    }