westlife_zhuang 2016-04-04 13:55 采纳率: 33.3%
浏览 3038

C++运算符重载实现连加

这是函数原型,成员函数:Matrix operator+(const Matrix&)
这是函数体
Matrix Matrix::operator+(const Matrix& m)
{
Matrix temp;
for (int i = 0;i < 2;i++)
{
for (int j = 0;j < 2;j++)
{
temp.p[i][j] = p[i][j] + m.p[i][j];
}
}
return temp;
}
运行时出现错误,无法实现连加,可是没有报错或警告的消息,这是怎么回事?
调试时出现这个:
[下面的框架可能不正确和/或缺失,没有为 ucrtbased.dll 加载符号]

  • 写回答

4条回答 默认 最新

  • 小怪物爱吹牛 2018-11-17 06:47
    关注

    要实现连加需要将操作符形参申明为const引用类型。如下
    //操作符申明为友元并重载
    friend matrix operator+(const matrix &M, const matrix &N) {
    if (M.num==N.num)
    {
    matrix temp = M;
    for (std::size_t i = 0; i != M.num.first; i++)
    for (std::size_t j = 0; j != M.num.second; j++)
    temp.data[i][j] += N.data[i][j];
    return temp;
    }
    else
    throw std::range_error("Matrix do not match !");
    }

    评论

报告相同问题?

悬赏问题

  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)