VC指针的问题
for(vector<AniIFace*>::iteratori=m_aMyFrameAni.begin();i!=m_aMyFrameAni.end();i++){if...
for (vector<AniIFace *>::iterator i = m_aMyFrameAni.begin(); i != m_aMyFrameAni.end();i++)
{
if ((*i)->IsEnd() == false)
{
(*i)->Draw(pDC);
}
}
为什么是(*i)->IsEnd()而不是i->IsEnd() 或者(&i)->IsEnd(),请高手分别讲讲谢谢了 展开
{
if ((*i)->IsEnd() == false)
{
(*i)->Draw(pDC);
}
}
为什么是(*i)->IsEnd()而不是i->IsEnd() 或者(&i)->IsEnd(),请高手分别讲讲谢谢了 展开
2个回答
展开全部
1 、首先要明白,-> 用于左边是“指向对象的指针”,右边是“对象的成员",否则就是语法错误;
2、要看的懂 i 的定义:vector<AniIFace *>::iterator i
这里的 i 是一个iterator (就是一种特殊指针),它指向了一个vector<T>的首元素的地址
3、加上解引用符号*, (*i) 就表示了vector<T>的首元素,这个元素是一个AniIFace * (就是一个指向AniIFace 类型的指针)
由上三点,为什么是(*i)->IsEnd()??
因为,IsEnd() 是 AniIFace 类的成员函数,(*i) 就等于一个指针,它指向AniIFace 类型。
为什么不是i->IsEnd() ??
因为 i 虽然是一个指针,但是 IsEnd() 并不是 i 指向的类型的成员函数(i指向了一个指针,这个指针指向AniIFace 类)
为什么不是(&i)->IsEnd(),??
因为(&i) 又取了 i 的地址,(&i) 指向了一个指针,这个指针指向了一个AniIFace 类指针。。。
2、要看的懂 i 的定义:vector<AniIFace *>::iterator i
这里的 i 是一个iterator (就是一种特殊指针),它指向了一个vector<T>的首元素的地址
3、加上解引用符号*, (*i) 就表示了vector<T>的首元素,这个元素是一个AniIFace * (就是一个指向AniIFace 类型的指针)
由上三点,为什么是(*i)->IsEnd()??
因为,IsEnd() 是 AniIFace 类的成员函数,(*i) 就等于一个指针,它指向AniIFace 类型。
为什么不是i->IsEnd() ??
因为 i 虽然是一个指针,但是 IsEnd() 并不是 i 指向的类型的成员函数(i指向了一个指针,这个指针指向AniIFace 类)
为什么不是(&i)->IsEnd(),??
因为(&i) 又取了 i 的地址,(&i) 指向了一个指针,这个指针指向了一个AniIFace 类指针。。。
展开全部
竟然没人回答?
i被声明为iterator, iterator类型本身就是一种特殊指针
所以必须使用类似指针的方式使用,即 *i表示vector中的元素
在访问类的成员时,只有指针才能用->的形式访问,否则要用"."来访问,比如 class.member
所以只能用(*i)->IsEnd()的形式,
i->IsEnd() 错误,原因是i是vector的iterator,并没有IsEnd函数,不过可以用 i == m_aMyFrameAni.end()作为判断条件
(&i)->IsEnd()就更说不通了,对i取地址是没什么意义的,其更没有IsEnd函数
i被声明为iterator, iterator类型本身就是一种特殊指针
所以必须使用类似指针的方式使用,即 *i表示vector中的元素
在访问类的成员时,只有指针才能用->的形式访问,否则要用"."来访问,比如 class.member
所以只能用(*i)->IsEnd()的形式,
i->IsEnd() 错误,原因是i是vector的iterator,并没有IsEnd函数,不过可以用 i == m_aMyFrameAni.end()作为判断条件
(&i)->IsEnd()就更说不通了,对i取地址是没什么意义的,其更没有IsEnd函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询