operator[] 的疑难

Sandrer 2010-01-23 03:48:23

typedef struct tagMYSTRUCT
{
int nTest1;
int nTest2;
} MYSTRUCT, *LPMYSTRUCT

class CMyClass
{
public:
CMyClass();
~CMyClass();

MYSTRUCT *operator[](INT_PTR nIndex) const;
MYSTRUCT &operator[](INT_PTR nIndex);

protected:
MYSTRUCT *m_pData;
};


// 实现
MYSTRUCT *CMyClass::operator [](INT_PTR nIndex) const
{
return &m_pData[nIndex];
}

MYSTRUCT &CMyClass::operator [](INT_PTR nIndex)
{
return m_pData[nIndex];
}


// 下面是调用
CMyClass *myClass;
myClass = new CMyClass();

/* 这里做一些工作,使得 CMyClass::m_pData 包含有数据 */

if (myClass[x].nTest2 == 100) // 这里提示出错,error C2039: 'nTest2' : is not a member of 'CMyClass'
{
// ......
}



上面代码中的 myClass 必须为类指针(也就是说不能定义成 CMyClass myClass)。
究竟如何操作才能正确访问到数据?
...全文
79 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sandrer 2010-01-23
  • 打赏
  • 举报
回复
结帖结那么快,不知道会不会有人说倒分呢~~~~~~~
Sandrer 2010-01-23
  • 打赏
  • 举报
回复
明白了............
pengzhixi 2010-01-23
  • 打赏
  • 举报
回复
if((*myClass)[x].nTest2 == 100)//要用也得这样。
pengzhixi 2010-01-23
  • 打赏
  • 举报
回复
myClass[x].nTest2 == 100//你重载的[]返回的是指针。指针的话是要用->操作符号的,建议你返回引用。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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