先模拟一下实现
#include <iostream>
#include <string>
using namespace std;
class CCApplication
{
public:
CCApplication()
{
sm_pSharedApplication = this;
}
int run() {
cout << "run() function, sm_pSharedApplication = " << sm_pSharedApplication << endl;
return 0;
}
static CCApplication * sharedApplication()
{
return sm_pSharedApplication;
}
protected:
static CCApplication * sm_pSharedApplication;
};
CCApplication *CCApplication::sm_pSharedApplication = 0;
class CCDerivedCCApplication : CCApplication
{
};
int main()
{
CCDerivedCCApplication app;
CCApplication::sharedApplication()->run();
}
一个cocos2dx里面会包含一个的派生CCApplication对象。通过静态的父类指针调用非虚函数run...