template <typename ElementType>
class AList{};
class A{};
class B : public A{};
class C : public A{};
class D : public A{};
template <typename TypeE>
class E{};
(...)
AList< E<A> > ListofEwithBCandDasTypE;
但是,显示的代码仅列出E,其中A为模板参数。我该如何解决?
答案 0 :(得分:1)
使用C ++ 98(我对C ++ 11不熟悉)。
您需要多态并直接管理指针而不是对象。见这个例子:
class A
{
public:
virtual ~A() {}
};
class B : public A
{
public:
virtual ~B() {}
};
class C : public A
{
public:
virtual ~C() {}
};
template <typename T>
class AList
{
public:
add(T* x);
// ...
};
template <typename T>
class E
{
public:
E(A* ptr) { /*...*/ }
// ...
};
AList< E<A*> > list;
list.add(E(new B));
list.add(E(new C));
不要忘记管理你的记忆!