【问题标题】:Chaining overloaded + operators链接重载的 + 运算符
【发布时间】:2017-11-03 21:47:06
【问题描述】:

我一直在编写一个多项式类,并且正在为它重载运算符。我设法(我认为)成功地重载了 += 运算符,现在我创建了一个使用 += 进行加法的外部函数,就像许多来源中建议的那样。它有效,但由于某种原因我无法链接它们 当我尝试添加这样的多项式时

poly a, b, c, d;
a=b+c+d;

我得到一个错误:没有匹配函数调用'poly::poly(const poly)'

我的 += 函数的主体并不那么重要,但就是这样:

poly& operator+= (const poly& a){
        //implemented +=
        return *this;

    }

我的加法函数(类外)如下所示:

const poly operator+ (poly a, const poly & b){
    a+= b;
    return a;
}

我在这里做错了什么?

【问题讨论】:

  • 为什么operator+ 会返回const
  • ab 都应该是 const &
  • 您缺少copy constructor
  • 看起来您没有poly 的复制构造函数。 b + c 产生 const poly 并且您的 operator +poly 作为第一个参数,因此它必须将 const poly 复制到 poly a 但它不能,因为没有复制构造函数 poly::poly(const poly &) .

标签: c++ class object math overloading


【解决方案1】:

您的poly 类缺少poly(const poly&) 形式的复制构造函数。请注意,如果您已经拥有poly(poly&),那还不够。您需要一个以const poly& 作为参数的复制构造函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多