我在绕着这个问题缠绕时遇到了一些困难,可能是因为我不完全理解底层的机制.
我有一个如下结构:
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. 我试过这个,即使我无法从逻辑上理解为什么它会对我的问题有所帮助,但它不起作用.任何帮助表示赞赏.