【问题标题】:overloading a simple = operator重载一个简单的 = 运算符
【发布时间】:2013-03-29 20:26:56
【问题描述】:

我正在尝试将我的部分课程重载到 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=' must be a member function。 我也尝试过使用 istream,但这也没有用。

有人知道我该怎么做吗?

【问题讨论】:

  • 报错信息还不够清楚吗?
  • 一个(显式)转换运算符或函数可以工作。您无法向std::string 添加函数以使其在作业中占用您的课程(或复制构造,这是您正在尝试做的事情)。

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


【解决方案1】:

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

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

        operator string()
        {
            return extensions_;
        }
    }

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-29
      • 2011-09-18
      • 2010-10-21
      相关资源
      最近更新 更多