0

我正在尝试将我的类的一部分重载到 astring并且我无法让重载工作。或者,我也会有一个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=' must be a member function。我也尝试过使用 istream,但这也没有用。

有人知道我该怎么做吗?

4

2 回答 2

4

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

class FileData
{
public:

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

    string extensions_;                 
    unsigned long long containsBytes_;      
};

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

于 2013-04-07T20:49:39.470 回答
3

你不能重载 std::string 的 operator=。您可能想要的是一个强制转换运算符:

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

        operator string()
        {
            return extensions_;
        }
    }
于 2013-04-07T20:48:05.417 回答