【问题标题】:Operator that return a constant reference返回常量引用的运算符
【发布时间】:2016-12-06 13:40:45
【问题描述】:

有人能告诉我如何覆盖一个运算符 (),它返回一个对从零开始的位置(第 x 列,第 y 行)的二维数组元素的常量引用? 我将数组数据存储在 T* 缓冲区中。 我认为我的方法声明应该是这样的:

const T & operator () (int x, int y) const {}

【问题讨论】:

  • return buffer[x * row_len + y];,也许吧?

标签: c++


【解决方案1】:

return T[x + y * columns] 是正常方式,其中columns 是“矩阵”中的列数。 return T[x * rows + y] 是另一种选择,其中rows 是“矩阵”中的行数。选择任一方案,具体取决于您是希望矩阵通过增加行数还是通过增加列数来轻松调整大小。

我只见过使用首先传递的行参数创建的这个函数。你的方式很独特吗?

如果你希望能够通过引用设置矩阵的元素,那么提供重载

T & operator () (int x, int y) {/*same function body*/}

也是。最后,考虑使用size_t 作为参数,或者在你的类中使用unsigned 类型typedeffed。

【讨论】:

  • 感谢您的帮助
猜你喜欢
  • 2011-03-07
  • 2012-01-01
  • 2020-07-09
  • 1970-01-01
  • 2019-09-22
  • 2012-01-08
  • 2016-07-14
  • 2020-07-06
  • 1970-01-01
相关资源
最近更新 更多