您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x的成员函数指针

2012-11-20 17:40 399 查看
#include "iostream"
using namespace std;
class CCObject
{

};
class base:public CCObject
{
private:
int value;
public:
base()
{
value = 314;

}
public:
void f()
{
std::cout<<value<<std::endl;
}
};
typedef void (CCObject::*SEL_SCHEDULE)();//typedef隐藏数据类型,SEL_SCHEDULE表示成员函数指针的类型
#define  schedule_selector(_SELECTOR) (SEL_SCHEDULE)(&_SELECTOR)
int main()
{
base* mybase = new base();
//SEL_SCHEDULE abc = schedule_selector(base::f);
SEL_SCHEDULE abc = (SEL_SCHEDULE)(&base::f);// (SEL_SCHEDULE)是强制转换,因为base和CCObject是不同的类(这行跟上面一行是一样的)

//	void CCObject::*ptrFun abc = (void CCObject::*ptrFun())(&base::f);
CCObject* obj = new CCObject;
(obj->*abc)();//这里不能输出正常的value值,因为不是用base的实例去调用
(mybase->*abc)();//这里要求mybase继承CCObject,否则编译错误
void (CCObject::*ptrMemeberFunc)();
//ptrMemeberFunc = (&base)::f;

return 0;
}

输出:

-33686067

314
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: