так-то наоборот, для этого полиморфизм и существует ,чтобы твоему методу/функции/прочему потребителю было похую на то, какая именно там реализация, в плюсах оно ковариантно
По поводу IPlugin, там залупа короче такая, что я не могу из другого модуля вызывать методы классов если не создам абстрактный класс с виртуальными методами, которые хочу вынести у подкласса наружу
Если этот абстрактный класс убрать, оставить только IPlugin и унаследовавшийся от него класс MyPlugin к примеру, то не сможешь вызвать методы из MyPlugin в другом модуле
Если этот абстрактный класс убрать, оставить только IPlugin и унаследовавшийся от него класс MyPlugin к примеру, то не сможешь вызвать методы из MyPlugin в другом модуле
тебе как-то надо просто схоронить инфу о типе внутри того, куда оно передается
самый простой и тупой вариант, короче. сделать условный T * GetComponent<T> () { return dynamic_cast<T*>(plugin); }
у тебя как раз получается, что ты можешь запросить динамик-кастом фактический тип, и если оно реально есть, у тебя будет корректный пойнтер на этот класс
у тебя как раз получается, что ты можешь запросить динамик-кастом фактический тип, и если оно реально есть, у тебя будет корректный пойнтер на этот класс