C++的坑(一)

回调函数的坑

在cocos2dx中,callfuncO_selector等宏可以把成员函数的地址存储起来,在合适的时候通过函数指针调用成员函数。

但自己在使用时,在成员函数中启用了C++的隐含的this指针,也就时在成员函数里访问了成员变量。

这种情况就会导致,如果在调用函数时,不是通过类的对象指针调用成员函数,就会发生this指针被改变,同时成员变量会为null的情形。

C++的编译器在编译时,不会认为这种是错误。

C++的正确的函数指针的调用方法——

(m_target->*m_action)(m_callbackParamater);  m_target是成员函数指针m_action的类对象实例的地址,m_callbackParamater为参数。

从上面也引出另一个问题,静态函数中不存在this指针,所以可以直接类似C一样把其地址存起来,在合适的时候直接调用。

另转几份c++ this指针的资料

http://developer.51cto.com/art/201104/254741.htm

http://www.cnblogs.com/winston/archive/2008/06/03/1212700.html(里面提到了 return *this)

posted @ 2014-01-03 09:55  城市*斗士(技术)  阅读(176)  评论(0编辑  收藏  举报