【发布时间】:2017-08-16 11:05:10
【问题描述】:
我想访问一个类中的多维数据,我发现:
提供多维数组访问语义,例如要实现 3D 数组访问 a[i][j][k] = x;,operator[] 必须返回对 2D 平面的引用,它必须有自己的 operator[] 返回对 1D 行的引用,它必须有 operator[] 来返回对元素的引用。为了避免这种复杂性,一些库选择重载 operator(),以便 3D 访问表达式具有类似 Fortran 的语法 a(i, j, k) = x;
在http://en.cppreference.com/w/cpp/language/operators
并且我想使用建议的语法,但我在实施时遇到了麻烦。我怎样才能编写重载赋值运算符以这种方式工作?
【问题讨论】:
-
Eigen库可能就是这样做的。另外:你有什么烦恼? -
是的,我使用了 Eigen,但有趣的是,这次 gcc 4.6 是我的极限...... :( 但好主意,我会尝试搜索他们是如何做到的。
-
你不需要重载赋值运算符。你只需要让
()返回一个引用。 -
我很困惑如何获得正确的语法,你能发一些例子吗?
-
你试过什么?您究竟在实施它时遇到了什么困难?
标签: c++