我有一个2D数组,我想定义一个函数,它返回用户使用运算符重载的索引值.换一种说法:
void MyMatrix::ReturnValue() { int row = 0, col = 0; cout << "Return Value From the last Matrix" << endl; cout << "----------------------------------" << endl; cout << "Please Enter the index: [" << row << "][" << col << "] =" << ((*this).matrix)[row][col] << endl; }
该操作((*this).matrix)[row][col]
应该返回一个int
.我不知道如何建立operator [][]
.
或者,我可以连接几个调用operator []
,但我没有成功,因为第一次调用该操作将返回int*
,第二次将返回int
,它强制构建另一个运算符,我不想去做.
我能做什么?谢谢,
简单地说,这样的操作符不存在,因此您不能超载它.
一种可能的解决方案是定义两个类:Matrix和Row.
您可以定义operator[]
a,Matrix
以便它返回a Row
,然后定义相同的运算符,Row
以便它返回实际值(int
或者您想要的任何值,您Matrix
也可以是模板).
这样,该陈述myMatrix[row][col]
将是合法且有意义的.
同样可以为了分配新做Row
的Matrix
或改变一个值Row
.
*编辑*
正如评论中所建议的那样,您也应该考虑使用operator()
而不是operator[]
针对这种情况.
这样,就不再需要Row
课程了.