Хочу реализовать что-то вроде механизма плагинов, пока не динамически подключаемых. Каждый плагин представляет собой класс имеющий метод run() внутри которого и будет выполняться полезная работа. Проблема в том что при запуске надо инициализировать GUI, т.е сообщить ему(ей) какие плагины в данный момент существуют, при этом сами объекты классов, реализующих плагины, еще не созданы. Для этого придумал такую конструкцию : class AbstractPlugin { public: virtual void run()=0; virtual string initGUI()=0; }; class PluginCtor { public: virtual AbstractPlugin * create()=0; virtual void registerPlugin()=0; }; class PluginManager { friend class PluginCtor; public: static vector<PluginCtor *> * theCtors; }; #define CREATECTOR(name) \ class Ctor##name : public PluginCtor { \ public: \ AbstractPlugin * create() { return new (##name)();} \ void registerPlugin() {PluginManager::theCtors->push_back(this);} \ Ctor##name() {registerPlugin();} \ }; \ static Ctor##name Ctor##name##_var; class RealPlugin : public AbstractPlugin { public: void run(); string initGUI(); }; Здесь все классы-плагины должны быть потомками AbstractPlugin, и в файле с реализацией (*.cpp) вызывать макрос CREATECTOR() со своим именем в качестве параметра. А дальше в main() я пробегаю по массиву theCtors, создаю объект через create(), вызываю initGUI() и сразу же уничтожаю. А вопрос такой : как все это можно реализовать средствами С++ проще, по возможности без использования статических переменных(static Ctor##name Ctor##name##_var;), а лучше вообще без макросов. Может кто-нибудь уже делал что-то подобное?
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Java + теоретический вопрос (2005)
- Форум ActiveQT: объект в event'е (2017)
- Форум Почему такое использование выдает null pointer exception? (2020)
- Форум Добавить сахара в Java вдохновляясь Lombok (2016)
- Форум [Hibernate] Помогите побороть исключение «No persister for» (2011)
- Форум Доступ к Context в State pattern (2014)
- Форум Реализация полиморфизма (2006)
- Форум [Java] Пару идеологических вопросов. (2009)
- Форум доступ к шаблонным объектам фабрики??? (2006)
- Форум Вызвать метод базового класса при разрушении дочернего объекта (2015)