Max*_*nke 1 c++ operator-overloading multidimensional-array
我想写自己的2d数组类.我希望类能够为这样的元素赋值.
a(0,0) = 1
Run Code Online (Sandbox Code Playgroud)
我知道这一定是可能的,因为我可以用blaze和eigen的矩阵类来做.我的第一个想法是重载函数运算符(),它已经很好地访问元素.当我尝试分配值时,a(0,2) = 0;我得到编译器错误.
lvalue required as left operand of assingment
Run Code Online (Sandbox Code Playgroud)
我有什么操作员来重载分配也有效?
您需要使用此原型构建一个函数:
T& operator()(std::size_t, std::size_t);
T你的元素类型在哪里.此函数需要返回对数组中元素的引用.这允许您通过调用者中的该引用修改元素的值.
除了以上,你还应该提供这个功能
const T& operator()(std::size_t, std::size_t) const;
用于只读元素访问.我宁愿教条地坚持std::size_t你的索引.实际上,您可能希望typedef自己的一个代表索引类型.