请问怎么重载多维数组下标

triperkll 2009-04-25 05:32:58
我有一个类里有二维数组,我怎样重载该类的[][]符号,实现查找,修改该类二维数组的对应数组。
我只见过有[]符号重载啊,没有[][]符号啊,此外,如果是多维数组那,怎么办呢?
我想来想去也不知道如何下手,特来请问各位高人。
...全文
278 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
hityct1 2009-04-25
  • 打赏
  • 举报
回复
又长见识了。
chenchangxiong 2009-04-25
  • 打赏
  • 举报
回复
受教
Jarrys 2009-04-25
  • 打赏
  • 举报
回复
确实二维重载就是一维重载的两次重叠,只要定义一维重载,然后去引用就可以了、、
triperkll 2009-04-25
  • 打赏
  • 举报
回复
谢谢各位啦,直接操作我当然知道啊,但是重载运算符号不就是为了方便吗,我就是这里卡住了,4楼的答案让我豁然开朗。
S_zxing 2009-04-25
  • 打赏
  • 举报
回复
帮顶……
zzma2 2009-04-25
  • 打赏
  • 举报
回复
学习中..
「已注销」 2009-04-25
  • 打赏
  • 举报
回复
直接用指针查不就行了吗?
pause123 2009-04-25
  • 打赏
  • 举报
回复
学习!
liliangbao 2009-04-25
  • 打赏
  • 举报
回复
帮顶先~
hityct1 2009-04-25
  • 打赏
  • 举报
回复
要修改就返回引用。
int& GetArray(int r/*行*/, int c/*列*/)
{
return m_a[r][c];
}
baiwei156 2009-04-25
  • 打赏
  • 举报
回复
int& operator[] (int i){return coord[i];}
int operator[] (int i)const {return coord[i];}

就这么重载就可以了啊

二维数组的[][]符号重载不就是[]运行了2次吗?
只要你定义了[]的重载就可以了的
  • 打赏
  • 举报
回复
我帮你找找,以前写过一个类似的,不过思路是用句柄类实现的。专门针对二维数组。你看下吧


#include <iostream>
#include <string>

using namespace std;

template <class T> class arr;
template <class T> class arrBody
{
private:
friend class arr<T>;
T* data;
int row,col,current_row;
arrBody(int r,int c,T d):row(r),col(c)
{
data=new T[r*c];
current_row=-1;
for(int k=0;k<r*c;k++) //初始化数据,默认为0
data[k]=d;
}
public:
T& operator[](int j) //重载第2个[]号
{
if(j>=0&&j<col)
return data[current_row*col+j];
}
~arrBody(){delete[]data;}
};

template <class T> class arr
{
private:
arrBody<T> tBody;
public:
arrBody<T> &operator[](int i) //重载第一个[]号
{
if(i>=0&&i<tBody.row)
tBody.current_row=i;
return tBody;
}
arr(int i,int j,T d=0):tBody(i,j,d) {}
};


void main()
{
arr<int> a(10,20);
arr<double> b(5,5);
cout<<a[5][5]<<endl;
}
hityct1 2009-04-25
  • 打赏
  • 举报
回复
没见过,应该不可以。
用函数就行。
比如
int m_a[2][2];

int GetArray(int r/*行*/, int c/*列*/)
{
return m_a[r][c];
}
  • 打赏
  • 举报
回复
多维数组的[][]符号重载其实还是一个[]效果叠加起来的。
比如2维的[][]
第一个[]:查找行数,并返回行变量
由行变量调用第2个[]:超找列数,返回列变量,
这样就可以了。
nickyjay0501 2009-04-25
  • 打赏
  • 举报
回复
帮顶

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧