【发布时间】:2010-01-07 23:56:36
【问题描述】:
标题可能有误导性,但我真的不知道如何命名。
假设我有以下结构
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);
谢谢!
【问题讨论】:
-
投票关闭,因为不再相关,因为如何在
ptr上调用方法的问题是基于一个有缺陷的前提,即完全可以声明ptr. -
手头更大的问题是什么?
-
您希望传入什么“类型”的向量?你想收集什么值?您是否希望将 char 和 floats 都存储在向量中?所以无论如何您都会将它们转换为一种类型...可能有一个简单的解决方案可以解决您的问题,但我们不知道您要解决的问题是什么
标签: c++ generics templates dynamic