Название, вероятно, вводит в заблуждение, но я действительно не знал, как его назвать.C++ получение динамического универсального типа указателя?
скажем, у меня есть следующие структур
template <typename T>
struct SillyBase{
void doFunnyStuff(vector<T> vec){
dummyField = T();
for(int i=0; i<10; i++)
vec.push_back(dummyField++);
}
T dummyField;
};
struct A : public SillyBase<char>{};
struct B : public SillyBase<float>{};
теперь давайте далее предположим, что у меня есть указатель
ISillyBase* ptr;
, который указывает на объект класса-потомок (А или В) SillyBase - однако я НЕ ЗНАЮ, какой из них (я просто знаю, что это A или B);
Есть ли способ для меня позвонить doFunnyStuff()?
может быть что-то вроде:
vector<dynamic_generic_type_of(ptr)> vec;
ptr->doFunnyStuff(vec);
спасибо!
Проголосовало за закрытие как * не актуально *, потому что вопрос о том, как вызвать методы на 'ptr', основан на ошибочной предпосылке, что можно вообще объявить' ptr'. –
Какова большая проблема? – GManNickG
Какой «тип» вектора вы ожидаете пройти? и какие ценности вы хотите собрать? вы ожидали бы сохранить как символ, так и поплавки в векторе? поэтому вы все равно конвертируете их в один тип ... вероятно, есть простое решение вашей проблемы, но мы не знаем, в чем проблема, которую вы пытаетесь решить – stefanB