两个中括号([ ][ ]) 能重载吗?

rokia 2003-05-27 05:59:17

能不能呢?各位大侠。 有谁试过吗?

或者可以通过其它方式解决?
...全文
661 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyunet 2003-05-28
  • 打赏
  • 举报
回复
[][]是两部操作,不可以直接重载,不过用到[][]的就是2维数组吧,你只要实现出范型的一维数组就可以了,就像标准库中作的那样。

vector<vector<int〉〉 container;

container[0][0]....
rokia 2003-05-28
  • 打赏
  • 举报
回复
哇塞,CSDN强手如林啊。

好好。 多谢各位。 我要再加点分!
Wendydd 2003-05-28
  • 打赏
  • 举报
回复
参见More Effective C++条款30“Proxy classes”的“实现二维数组”

template<class T>
class Array2D {
public:
class Array1D {
public:
T& operator[](int index);
const T& operator[](int index) const;
...
};

Array1D operator[](int index);
const Array1D operator[](int index) const;
...
};

于是,下面动作就合法了:
Array2D<float> data(10, 20);
cout << data[3][6];
cenphoenix 2003-05-27
  • 打赏
  • 举报
回复
学习ing
yiminggw 2003-05-27
  • 打赏
  • 举报
回复
yesyes:)
ghtsao 2003-05-27
  • 打赏
  • 举报
回复
这个问题我在别的地方见过解决方法了,最好是用函数来解决,这样多少维数组都没问题:

比如一个二维整型数组:

int& Matrix::operator ()(int i, int j) const
{

}

使用的时候:

Matrix a;

int x = a(i,j);
a(i,j) = x;

我觉得太巧妙了,大家学习一下。
shishiXP 2003-05-27
  • 打赏
  • 举报
回复
[]一个就行了

[][]照用
hpho 2003-05-27
  • 打赏
  • 举报
回复
class A2d{
typedef int Elem;
public:
A2d& operator [](int){return *this;}
Elem operator [](long){return 0;}
};
darkhawk 2003-05-27
  • 打赏
  • 举报
回复
呵呵,这你都能想的出来,虽然编译器不支持,但是我觉得既然能支持单个的[],也应该支持多个的,因为有多维数组的情况啊。
Wendydd 2003-05-27
  • 打赏
  • 举报
回复
确实不行
你是想实现一个二维数组啊?

有这样一个解决办法
在你的类里面先overload []
然后再内嵌一个类,再overload []
大概就是这个样子吧:
class array2d
{
public
class array1d
{
public
operator [](int);
};

operator [](int);
};
David2008 2003-05-27
  • 打赏
  • 举报
回复
光是信书不行
但是,有时候还是没有办法
:)
kicool 2003-05-27
  • 打赏
  • 举报
回复
[][]确实是两次运算,而不是一个运算符。
你是不是想实现二维数组?如果是的话,你可以参照《数据结构与算法-面相对象的C++设计模式》(电子工业出版社,翻译)4.3.2节。我现在简单说一下:
a[i][j] 在C++里相当于:a,operator[](i).operator[](j)
你可以在class Array2D里申明一个嵌套类,嵌套类用来描述一个给定二维数组特定行的引用,它应该包含如下成员变量:所引用的数组和所要存取的行;以及一个函数成员:重载的operator[].
ixMind 2003-05-27
  • 打赏
  • 举报
回复
我想[][]应该是两次运算,而不是一个运算符
rokia 2003-05-27
  • 打赏
  • 举报
回复
哦,谢谢。
MessiahLS 2003-05-27
  • 打赏
  • 举报
回复
书上说的不行

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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