привет StartupCommand PureMVC cpp с CMake

Что было бы самым простым примером CMakeLists.txt, main.cpp а также PureMVC sources отобразить «Hello Startup» из execute () запуска SimpleCommand?

Источники PureMVC Вот

В идеале решением может быть ссылка на проект github.

0

Решение

Вы должны скомпилировать соответствующие dll и lib (Debug или Release [static | shared]), включая файлы PureMVC. Может быть, вы можете получить фасад из PureMVC :: Patterns :: Facade, переопределить основные виртуальные функции. Поскольку в C ++ и Java-подобных языках программирования все по-другому, переопределенная initializeController () не будет вызываться в конструкторе базового класса!
Вот хороший пример:

class ApplicationFacade
: public virtual IFacade
, public Facade
{
friend class Facade;
public:
static const string STARTUP;
static const string EXIT;
protected:
ApplicationFacade(void)
: Facade(this, "ApplicationFacade")
{
initializeController();
}

public:
static ApplicationFacade& getInstance(void)
{
if (Facade::hasCore("ApplicationFacade"))
return *(dynamic_cast<ApplicationFacade*>(&Facade::getInstance("ApplicationFacade")));
return *(new ApplicationFacade());
}

protected:
virtual void initializeNotifier(string const& key)
{
Facade::initializeNotifier(key);
}
virtual void initializeFacade()
{
Facade::initializeFacade();
}

virtual void initializeController(void)
{
Facade::initializeController();
StartupCommand* startupCommand = new StartupCommand();
registerCommand(STARTUP, startupCommand);
ExitCommand* exitCommand = new ExitCommand();
registerCommand(EXIT, exitCommand);
}

~ApplicationFacade()
{
}
};
const string ApplicationFacade::STARTUP = "startup";
const string ApplicationFacade::EXIT = "exit";

StartupCommand и ExitCommand являются производными от PureMVC :: Patterns :: SimpleCommand
Затем в main.cpp вы можете запустить программу:

ApplicationFacade& facade = ApplicationFacade::getInstance();
facade.sendNotification(ApplicationFacade::STARTUP);

И выход:

facade.sendNotification(ApplicationFacade::EXIT);
1

Другие решения


По вопросам рекламы [email protected]