有人能告诉我如何覆盖一个operator(),它返回一个对基于零的位置(列x,行y)的二维数组元素的常量引用? 我将数组数据存储在T *缓冲区中。 我认为我的方法声明应如下所示:
const T & operator () (int x, int y) const {}
答案 0 :(得分:0)
return T[x + y * columns]
是常规方式,其中columns
是"矩阵"中的列数。 return T[x * rows + y]
是另一种选择,其中rows
是"矩阵"中的行数。选择任一方案,取决于您是否希望通过增加行数或通过增加列数来简单地调整矩阵的大小。
我以前只见过使用行参数创建的这个函数。你的方式是特殊的吗?
如果您希望能够通过引用设置矩阵的元素,那么提供重载
T & operator () (int x, int y) {/*same function body*/}
太。最后,请考虑使用size_t
作为参数,或者在您的课程中使用unsigned
类型typedef
。