被一个小问题难住,C++成员如何调用重载运算符函数
答案:4 悬赏:0
解决时间 2021-02-17 22:25
- 提问者网友:残阳碧曼
- 2021-02-17 18:17
大师请帮忙,代码如下,想在类内部成员里调用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["< }
}
最佳答案
- 二级知识专家网友:零负荷的放任
- 2021-02-17 19:54
void init()
{
for(int i=0;i<5;i++)
{
//this[i]=321;//incorrect
(*this)[i]=321;//correct!!成员函数是通过对象(引用)直接调用的,*this表示当前对象
}
}
全部回答
- 1楼网友:温柔刺客
- 2021-02-17 22:44
把
operator[](i)=-1;换成
m_array[i] = -1;
- 2楼网友:星痕之殇
- 2021-02-17 21:47
(*this)[i]=321;
你要这样?
this是一个指针
- 3楼网友:一场云烟
- 2021-02-17 21:02
你的这个this 是指GuessWhat这个类本身, 即this 实际上是GuessWhat* 你赋给它一个int, 肯定错了.
我觉得这样更好理解吧:
void init ()
{
int *p = m_array;
for (int i = 0; i<5; i++)
*p++ = -1;
}
我要举报
大家都在看
推荐资讯