我想知道是否可以有一个容器,其中包含具有不同模板参数的对象。
我正在尝试实现类似于这样的东西:
#include <iostream>
#include <list>
template <class T>
class base
{
public:
T val;
base(T newVal): val(newVal) {};
};
class derived : public base<int>
{
public:
derived(int newVal): base(newVal) {};
};
int main ( void )
{
std::list < base<?> > base_collection;
return 0;
}
我希望我的当前项目尽可能灵活和动态,当需要一个新的派生类时,不需要太多额外的编码工作,而我的当前实现使得这样的列表存在非常重要。
有没有一种常用、有益且干净的方法可以完全实现这一点?
base<int>
和base<float>
是完全不同的类型。而且你无论如何都不能将派生类对象存储在基类变量中。 - user253751