首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

operator[] 的疑难解决办法

2012-02-26 
operator[] 的疑难C/C++ codetypedef struct tagMYSTRUCT{int nTest1int nTest2} MYSTRUCT, *LPMYSTRUCT

operator[] 的疑难

C/C++ code
typedef struct tagMYSTRUCT{    int nTest1;    int nTest2;} MYSTRUCT, *LPMYSTRUCTclass 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)。
究竟如何操作才能正确访问到数据?

[解决办法]
myClass[x].nTest2 == 100//你重载的[]返回的是指针。指针的话是要用->操作符号的,建议你返回引用。
[解决办法]
if((*myClass)[x].nTest2 == 100)//要用也得这样。

热点排行