根据cocos2d-x的代理模式,仿写一遍。
class CCApplicationProtocol { public: virtual bool applicationDidFinishLaunching() = 0; }; class CCApplication :public CCApplicationProtocol { public: static CCApplication* instance ; CCApplication() { //这里的this是CCApplication子类里面的对象 instance = this; } ~CCApplication() { } void run() { applicationDidFinishLaunching(); } static CCApplication* getInstance() { return instance; } }; CCApplication* CCApplication::instance = NULL; /** * @brief The Android class * android 平台实现 */ class Android:private CCApplication { public: bool applicationDidFinishLaunching() { cout<<"this is android"<<endl; return true; } }; /** * @brief The Linux class * Linux 平台的实现 */ class Linux:private CCApplication { public: bool applicationDidFinishLaunching() { cout<<"this is Linux"<<endl; return true; } }; /** * @brief The Ios class * IOS 平台的实现 */ class Ios:private CCApplication { public: bool applicationDidFinishLaunching() { cout<<"this is IOS"<<endl; return true; } }; /** * @brief The Ios class * win32 平台的实现 */ class Windows:private CCApplication { public: bool applicationDidFinishLaunching() { cout<<"this is windows"<<endl; return true; } };
Android平台实现的调用
Linux平台实现的调用(后面创建的对象会覆盖前面创建的对象)。
IOS平台
win32平台