本人水平有限 解释不对的地方多多谅解
typedef CCLayer* (*NEWTESTFUNC)() 看了cocos2d-x 中的一些例子后 觉得cocos2dx中函数指针 用的非常好 ,好的东西吗?就分享一下
typedef CCLayer* (*NEWTESTFUNC)(); // C 声明一个函数指针 这个函数指针 返回一个 CClayer 指针 (一般声明函数指针 (*fun)() 这个多加了一个 返回 类型 并且是指针类型 )
#define CF(className) create##className //D 返回一个 create##className 方法 的实例( define 没有类型判断 什么类型都行)相当于调用了一个方法
static NEWTESTFUNC createFunctions[] = { // B 创建了一个 函数 数组 (返回的是对象) CCLayer* createFunctions【0】
CF(SchedulerTimeScale),
CF(TwoSchedulers),
CF(SchedulerAutoremove),
};
TESTLAYER_CREATE_FUNC(SchedulerTimeScale) //创建了一个 static cclayer 函数 并且开辟了空间
TESTLAYER_CREATE_FUNC(TwoSchedulers)
TESTLAYER_CREATE_FUNC(SchedulerAutoremove)
#define TESTLAYER_CREATE_FUNC(className) \ //E create##className() 在这创建的 并且返回一个static函数
static CCLayer* create##className() \
{ return new className(); }
CCLayer* pLayer = (createFunctions[sceneIdx])(); //A
执行的顺序是 ABCDE