模拟代码进入过程:
- main.cpp
1 #include <iostream> 2 #include "AppDelegate.h" 3 #include "CCApplication.h" 4 #include "CCApplicationProtocol.h" 5 using namespace std; 6 7 int main() 8 { 9 AppDelegate app; 10 11 return CCApplication::sharedApplication()->run(); 12 }
- AppDelegate.h
1 #pragma once 2 #include "CCApplication.h" 3 class AppDelegate : 4 public CCApplication 5 { 6 public: 7 AppDelegate(); 8 virtual ~AppDelegate(); 9 10 virtual bool applicationDidFinishLaunching();//子类实现了接口 11 };
- AppDelegate.cpp
#include "AppDelegate.h" #include <Windows.h> AppDelegate::AppDelegate() { } AppDelegate::~AppDelegate() { }
//真正的入口 bool AppDelegate::applicationDidFinishLaunching() { MessageBoxA(0, "游戏开始", "提示", 1); return false; } - CCApplication.h
1 #pragma once 2 #include "CCApplicationProtocol.h" 3 4 class CCApplication : 5 public CCApplicationProtocol 6 { 7 public: 8 CCApplication(); 9 virtual ~CCApplication(); 10 11 int run(); 12 13 static CCApplication *sharedApplication(); 14 static CCApplication *sm_pSharedApplication; 15 };
- CCApplication.cpp
1 #include "CCApplication.h" 2 #include "stddef.h" 3 4 CCApplication * CCApplication::sm_pSharedApplication = NULL; 5 6 CCApplication::CCApplication() 7 { 8 sm_pSharedApplication = this;//注意这个this是子类AppDelegate传过来的 9 } 10 11 12 CCApplication::~CCApplication() 13 { 14 } 15 //run调用父类的applicationDidFinishLaunching()方法,父类的方法在子类中实现 16 int CCApplication::run() 17 { 18 applicationDidFinishLaunching(); 19 return 0; 20 } 21 22 CCApplication * CCApplication::sharedApplication() 23 { 24 if(sm_pSharedApplication != NULL) 25 return sm_pSharedApplication; 26 }
- CCApplicationProtocol.h
1 #pragma once 2 class CCApplicationProtocol 3 { 4 public: 5 CCApplicationProtocol(); 6 virtual ~CCApplicationProtocol(); 7 8 virtual bool applicationDidFinishLaunching() = 0; 9 };
- CCApplicationProtocol.cpp
#include "CCApplicationProtocol.h" CCApplicationProtocol::CCApplicationProtocol() { } CCApplicationProtocol::~CCApplicationProtocol() { }
运行截图: