【发布时间】:2019-04-03 09:28:34
【问题描述】:
如果我有一个模板类,我想用不同的数据类型进行实例化:
template <typename T>
class A {
T value;
// ...
};
我还想在标准模板库容器中使用这个类的对象(比如vector)。
在我的理解中,编译器不会接受创建A 对象的向量,因为A<int> 和A<char> 实际上是不同的类型,我不能将它们放在同一个向量中。
我找到的解决方法是创建一个基类、一个派生模板类和一个基类指针向量。
class ABase {
// ...
};
template <typename T>
class ADerived : public ABase{
T value;
// ...
};
std::vector<BaseA*> mySuperVector;
我开始尝试使用模板以获得更好的理解,我想知道是否有更好的解决方案。我上面的解决方法也让我很头疼,因为我担心在某些时候类型转换是不可避免的。
【问题讨论】:
标签: c++ templates inheritance stl generic-programming