社区
C语言
帖子详情
两个中括号([ ][ ]) 能重载吗?
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
打赏
举报
回复
书上说的不行
【C++】运算符
重载
⑬ ( 括号 () 运算符
重载
| 完整代码示例 )
一、括号 () 运算符
重载
1、括号 () 运算符介绍 2、括号 () 运算符
重载
二、完整代码示例 1、Test.cpp 测试类 4、执行结果
c++实现对"[]"和"()"的
重载
前面说到,c++的操作符
重载
是一项十分强大的功能,来看看对”[]”和”()”
两个
操作符的
重载
,这也是其强大的体现。1.
重载
中括号
”[]”在c/c++一般是实现取数组元素的值操作,”[]”内的数值为数组的下标,数组的下标为整数,如ar[0]、ar[7]。现在要实现的功能是
重载
”[]”使其支持下标是字符串类型的,如ar[“1st”],怎么做?
重载
操作符的原则是不能改变操作符的原有语义和操作数的
重载
方括号
中括号
[][] [C++]
用嵌套类:
#include
#include
using namespace std;
class Array;
class Matrix
{
public:
Matrix(int r=0,int c=0);
class Array
{
friend class Matrix;
public:
int & ope
C++ 函数对象(Function Object)是什么?C++
重载
小括号()是什么作用?
C++ 函数对象(Function Object)是什么?C++
重载
小括号()是什么作用?
c++运算符
重载
c++运算符
重载
C语言
69,336
社区成员
243,078
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章