gpt4 book ai didi

c++ - 参数化对象的 vector

转载 作者:太空宇宙 更新时间:2023-11-04 15:47:45 25 4
gpt4 key购买 nike

我想创建一个参数类型的对象 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com