我想创建一个参数类型对象的向量,其中每个对象都有不同的特殊类型。例:
template<typename A>
struct BaseAtom
{
A _a;
};
struct AtomA : BaseAtom<int>
{};
int main()
{
std::vector<BaseAtom*> v; // (1)
AtomA a;
v.push_back(&a);
}
从逻辑上讲,这是行不通的,因为BaseAtom是模板类型,并且在(1)中未指定template参数。如何创建具有此特征的向量?
最佳答案
您可以从常见的非模板类派生BaseAtom<A>
,并存储指向该类的指针:
struct Base {};
template<typename A>
struct BaseAtom: Base
{
A _a;
};
struct AtomA : BaseAtom<int>
{};
int main()
{
std::vector<Base*> v; // (1)
AtomA a;
v.push_back(&a);
}