имеется:
class Assignable; // находится в .so'шке, которая цепляется к бинарнику в процессе загрузки
class AssignableRawSocket : public Assignable; // находится в .so'шке которая подгружается dlopen'ом и регистрирует себя в map'е
virtual Assignable::init(std::string str); // инициализация родительского класса
virtual AssignableRawSocket::init(std::string str); // инициализация дочернего
Assignable * AssignableFactory::createObject();
AssignableRawSocket * a;
Assignable * a1;
AssignableFactory * f;
f = AssignableFactory::getFactoryByName(proto); // получаем одну из загруженых dlopen'ом фабрику
a = dynamic_cast<AssignableRawSocket *>(f->createObject()); // создаем дочерний объект, возвращаем указатель и неявно преобразуем к родительскому. Динамик кастим обратно - для наглядности
a1 = a; // опять неявно преобразуем
a->init(assignPath); // вызывается AssignableRawSocket::init() // вызывается дочерний init
a1->init(assignPath); // вызывается Assignable::init() // вызывается родительский init
Ответ на:
комментарий
от fghj
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Вызвать метод базового класса при разрушении дочернего объекта (2015)
- Форум C++, dlopen, Модули, Segmentation fault (2019)
- Форум g++ баг? (2011)
- Форум Вызов Python функций из C++. boost::python, Pyhton C-API. (2017)
- Галерея Links -g рулит!!! (2004)
- Форум links -g - проблемы! (2005)
- Форум transfer dynamic link to static link (2006)
- Форум Виртуальные функции (2007)
- Форум Виртуальные функции (2008)
- Форум Баг g++? Или ... (2005)