C++数组类,带有用于赋值的函数运算符

Max*_*nke 1 c++ operator-overloading multidimensional-array

我想写自己的2d数组类.我希望类能够为这样的元素赋值.

a(0,0) = 1
Run Code Online (Sandbox Code Playgroud)

我知道这一定是可能的,因为我可以用blazeeigen的矩阵类来做.我的第一个想法是重载函数运算符(),它已经很好地访问元素.当我尝试分配值时,a(0,2) = 0;我得到编译器错误.

lvalue required as left operand of assingment
Run Code Online (Sandbox Code Playgroud)

我有什么操作员来重载分配也有效?

Bat*_*eba 8

您需要使用此原型构建一个函数:

T& operator()(std::size_t, std::size_t);

T你的元素类型在哪里.此函数需要返回对数组中元素的引用.这允许您通过调用者中的该引用修改元素的值.

除了以上,你还应该提供这个功能

const T& operator()(std::size_t, std::size_t) const;

用于只读元素访问.我宁愿教条地坚持std::size_t你的索引.实际上,您可能希望typedef自己的一个代表索引类型.