我想创建一个参数类型的对象 vector ,其中每个对象都有不同的专用类型。示例:
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) 中指定。如何创建具有此特征的 vector ?
最佳答案
你可以导出 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);
}
关于c++ - 参数化对象的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13844881/