【问题标题】:How to overload comparison operator with matrix class?如何用矩阵类重载比较运算符?
【发布时间】:2014-04-14 20:33:30
【问题描述】:

无论我多么努力地搜索,我都无法弄清楚这一点。我必须做一个带有重载运算符的项目,而我唯一遇到的两个问题是 == 和!=。对于项目方向,== 定义为两个矩阵的行、列和值相同。

到目前为止,我所拥有的 == 是这样的:

bool Matrix::operator==(const Matrix & m) {
// not sure what to return if all values must be equal
}

问题是:我在函数中返回和比较什么才能使其正常工作?

提前谢谢。

【问题讨论】:

  • 请求家庭作业帮助的问题必须包括您迄今为止为解决问题所做的工作的总结,以及您在解决问题时遇到的困难的描述。检查herehere

标签: c++ overloading operator-keyword


【解决方案1】:

用数学术语来说,矩阵相等要求两个矩阵的所有对应元素,AB具有相同的值。因此 A = B 当且仅当 Ai,j = Bi,j 对于所有 i, j.

在您的情况下,您正在查看 C++ 中的实现,您需要验证 Matrix 实例 thism 的大小相同,并且它们各自在相应位置包含相同的值。如果它们的大小相同并且在相应位置具有相同的值,则== 将返回true(否则为false),!= 将返回false(否则为true)。

【讨论】:

  • 所以如果一切顺利,对于 == 我可以这样做:返回 true;如果它不起作用,则返回 false; ?
  • 好的,非常感谢。假设我有一个矩阵对象 a 和矩阵对象 b 彼此相等。为了测试这是否有效,我只能 cout
  • @tmricks94 您可能会得到1 而不是true,但是是的,它应该这样工作。此外,您可能需要用括号将a==b 括起来,以确保编译器清楚您的意思。
猜你喜欢
  • 1970-01-01
  • 2012-05-04
  • 2015-07-29
  • 1970-01-01
  • 1970-01-01
  • 2016-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多