标题可能会误导人,但我真的不知道该怎么命名。
假设我有以下结构体:
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)的实例,然而我并不知道具体是哪一个(只知道它可能是A或B)。
有没有什么方法可以调用doFunnyStuff()方法?
也许可以像这样:
vector<dynamic_generic_type_of(ptr)> vec;
ptr->doFunnyStuff(vec);
thanks!
ptr
上调用方法的问题基于错误的前提,即根本无法声明ptr
。 - Rob Kennedy