小编gat*_*rer的帖子

构造本身为shared_ptr类型的模板化容器

我在绕着这个问题缠绕时遇到了一些困难,可能是因为我不完全理解底层的机制.

我有一个如下结构:

template <class T>
struct A {
    int id;
    T x;
}
Run Code Online (Sandbox Code Playgroud)

然后将此结构用作shared_ptr的类型:

typedef std::shared_ptr<A> A_ptr;
Run Code Online (Sandbox Code Playgroud)

然后将其存储在地图中:

typedef unordered_map<int , A_ptr> AMap;
Run Code Online (Sandbox Code Playgroud)

但是,当我编译时,我收到以下错误:

> error: type/value mismatch at argument 1 in template parameter list
> for 'template<class _Tp> class std::shared_ptr'   typedef
> std::shared_ptr<A> A_ptr;
Run Code Online (Sandbox Code Playgroud)

我已阅读有关类似问题的其他帖子,但他们都建议在结构中创建shared_ptr A. 我试过这个,即使我无法从逻辑上理解为什么它会对我的问题有所帮助,但它不起作用.任何帮助表示赞赏.

c++ templates shared-ptr

0
推荐指数
1
解决办法
38
查看次数

标签 统计

c++ ×1

shared-ptr ×1

templates ×1