Есть некоторый класс, объявленный и реализованный в .cc файле. В этом же файле есть глобальные функции createClass, deleteClass. Этот .cc файл компилируется в .so модуль и затем подгружается в основную программу. Вопрос такой: как можно определить реализует ли этот класс, в загруженном .so, определенный интерфейс. class ModuleManager { public: template <class T_Interface> T_Interface* findModuleForInterface() const { // for each of loaded modules { // if loaded module implements T_Interface { // <- ?? // if module instance is 0 { // create module instance // } // return module instance // } // } // return 0 } }; Если добавить в .cc файл модуля еще одну функцию: bool probeClass(const std::type_info& pInfo) { return strcmp(typeid(SupportedIfaceA).name(), pInfo.name()) == 0 || strcmp(typeid(SupportedIfaceB).name(), pInfo.name()) == 0; } Все вроде бы получается. Но только на std::type_info::name() рассчитывать нельзя. Как вообще правильно реализуется такое на C++ (приложение работает с абстрактными интерфейсами; реализации интерфейсов загружаются из .so файлов; поиск реализации для заданного интерфейса)?
Ответ на:
комментарий
от Begemoth
Ответ на:
комментарий
от binnehex
Ответ на:
комментарий
от binnehex
Ответ на:
комментарий
от Begemoth
Ответ на:
комментарий
от watashiwa_daredeska
Ответ на:
комментарий
от Begemoth
Ответ на:
комментарий
от binnehex
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Вопрос по шаблонам функций-членов в С++ (2005)
- Форум lambda vs std::function<...> (2014)
- Форум почему компилятор не видит member type базового класса? (2015)
- Форум Вопрос по избыточности «possible implementation» std::is_base_of<> @ cppreference.com (2021)
- Форум Вывод типа для значений для которых нет перегрузки в std::ostream (2019)
- Форум Вспоминая C++. Проблемы с линковкой template'ов (2007)
- Форум [c++] CL's with-open-file like macro in C++ (2008)
- Форум boost.asio, boost.serialization (2010)
- Форум Шаблоны С++ (2005)
- Форум 100 dynamic_cast'ов за 1 миллисекунду (2014)