标题可能会引起误解,但我真的不知道如何命名。
假设我有以下结构
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的DECENDANT类(A或B)的对象-但是,我不知道哪个对象(我只知道它是A或B);
我可以通过任何方式调用doFunnyStuff()吗?
也许像这样:
vector<dynamic_generic_type_of(ptr)> vec;
ptr->doFunnyStuff(vec);
谢谢!
最佳答案
在您的示例中,您不能使用SillyBase*
,因为SillyBase
定义为
template <typename T> struct SillyBase {...}
因此,您需要提供类型...
另一个问题是,您将
vector<T>
的副本传递到doFunnyStuff()
中,然后填充它...这似乎不正确,因为当该方法返回时,您丢失了vec
,这应该是引用vector<T>&
吗?