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对象.是否有必要在编译时为指针指定模板?如果容器应该存储不同类型的对象怎么办?这不可能吗?
是否有必要在编译时为指针指定模板?
是.
如果容器应该存储不同类型的对象怎么办?这不可能吗?
它(直接)不可能.
没有类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实例都具有公共基类型,并且您可以任意使用基本指针.
| 归档时间: |
|
| 查看次数: |
5746 次 |
| 最近记录: |