中易网

被一个小问题难住,C++成员如何调用重载运算符函数

答案:4  悬赏:0  
解决时间 2021-02-17 22:25
大师请帮忙,代码如下,想在类内部成员里调用operator[](),有没有简写的方法
class GuessWhat
{
private:
int *m_array;
int m_size;
public:
int &operator[](int ix)
{
return m_array[ix];
}
GuessWhat(int p_size)
{
m_array=new int[p_size];
init();
}
~GuessWhat()
{
if(0!=m_array)
{
delete []m_array;
m_array=0;
}
}
void init()
{
for(int i=0;i<5;i++)
{
operator[](i)=-1;//我的问题就是在这里,这样写是可以正常运行的,怎么把它简化,我简化成下面的出错了
//this[i]=321;//incorrect!!
}
}
};
#include
int main()
{
GuessWhat what(5);
for(int i=0;i<5;i++)
{
std::cout<<"uninit what["< }
for(int i=0;i<5;i++)
{
what[i]=i*3;
}
for(int i=0;i<5;i++)
{
std::cout<<"what["< }
}
最佳答案
void init()
{
for(int i=0;i<5;i++)
{
//this[i]=321;//incorrect
(*this)[i]=321;//correct!!成员函数是通过对象(引用)直接调用的,*this表示当前对象
}
}
全部回答
把 operator[](i)=-1;换成 m_array[i] = -1;
(*this)[i]=321; 你要这样? this是一个指针
你的这个this 是指GuessWhat这个类本身, 即this 实际上是GuessWhat* 你赋给它一个int, 肯定错了. 我觉得这样更好理解吧: void init () {         int *p = m_array;         for (int i = 0; i<5; i++)              *p++ = -1; }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
因长期加班劳动强度超重引发的脑干出血属于工
味到家快餐在什么地方啊,我要过去处理事情
看演唱会的话 索尼hx300和索尼微单6000加便宜
酒店、公寓、办公、住宅、一般都是什么结构啊
用那家银行信用卡好点?
导热片的热导率测试标准与测试方法是什么?
博雅布艺窗帘地址有知道的么?有点事想过去
速溶摩卡咖啡会使人变胖吗
万全镇中心幼儿园地址好找么,我有些事要过去
魔兽世界7.0堕落的灰烬使者怎么获得 wow7.0灰
国家电网梅溪供电营业厅这个地址在什么地方,
QQ音乐突然变得很卡!!!
胸前带玉佛像有什么讲究
深夜了,我们还未入睡,朋友,这个夜里,也许
为什么我的一个文件夹删除不了,原来是放软件
推荐资讯
湖南省造双旗当制钱二十文铜币有10种怎么分?
梨儿坪在哪里啊,我有事要去这个地方
怎么种植小树
新祥丝绸怎么去啊,有知道地址的么
钱库大桥我想知道这个在什么地方
已知函数f(x)=ln(........,见图
老婊因病过世追悼词怎么写
有没有主人公是女的的galgame
2019漳州国家电网校园招聘有哪些流程?
云嘀车保这个地址在什么地方,我要处理点事
北机务段在哪里啊,我有事要去这个地方
查各地包包价格app
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?