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

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 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入