当前位置:  开发笔记 > 编程语言 > 正文

operator overloading [] [] 2d array c ++

如何解决《operatoroverloading[][]2darrayc++》经验,为你挑选了1个好方法。

我有一个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,它强制构建另一个运算符,我不想去做.

我能做什么?谢谢,



1> skypjack..:

简单地说,这样的操作符不存在,因此您不能超载它.

一种可能的解决方案是定义两个类:MatrixRow.
您可以定义operator[]a,Matrix以便它返回a Row,然后定义相同的运算符,Row以便它返回实际值(int或者您想要的任何值,您Matrix也可以是模板).
这样,该陈述myMatrix[row][col]将是合法且有意义的.

同样可以为了分配新做RowMatrix或改变一个值Row.

*编辑*

正如评论中所建议的那样,您也应该考虑使用operator()而不是operator[]针对这种情况.
这样,就不再需要Row课程了.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有