C++使用指向模板对象的指针

cyr*_*rux 9 c++ templates pointers template-specialization

我有一个名为ABC的类,它有一个类模板:

template <class T> class ABC{}
Run Code Online (Sandbox Code Playgroud)

在另一个类中,我试图在列表中存储对象ABC:

class CDE{
private:
  list<ABC *> some_list; 
}
Run Code Online (Sandbox Code Playgroud)

我打算存储可能具有不同类模板参数的ABC对象.是否有必要在编译时为指针指定模板?如果容器应该存储不同类型的对象怎么办?这不可能吗?

Tim*_*Tim 9

是否有必要在编译时为指针指定模板?

是.

如果容器应该存储不同类型的对象怎么办?这不可能吗?

它(直接)不可能.

没有类ABC这样的东西.只有ABC的实例化,例如ABC<Foo>ABC<Bar>.这些是完全不同的类.

你可以这样做:

template<typename T>
class ABC : public ABC_Base
{
  ...
}

list<ABC_Base*> some_list;
Run Code Online (Sandbox Code Playgroud)

通过执行此操作,所有ABC实例都具有公共基类型,并且您可以任意使用基本指针.

  • @cyrux如果你制作`ABC_Base`摘要,那么没人能创建`ABC_Base`的对象. (4认同)