C++ map 第二个值定义 template: allocator 怎么办? 20

我想这么定义map:map的第二个值的类型用模板来传入,不过这样编译报错了,好像mapclass的allocator类型不匹配,这个怎么办?template<classT... 我想这么定义map: map的第二个值的类型用模板来传入,不过这样编译报错了,
好像map class的allocator类型不匹配,这个怎么办?
template<class T>
struct RamData
{
uint32 Type;
T * value;
};
template<class T>
std::map<int, RamData<T> > RamMap;
编译报的错是这个:
error: template declaration of 'std::map<int, Devices::RamData<T>, std::less<int>, std::allocator<std::pair<const int, Devices::RamData<T> > > > Devices::RamMap
如果这样做不行,请问有什么替代的方法?
展开
 我来答
匿名用户
2017-02-14
展开全部
#include <map>
#include <iostream>
using namespace std;

template<class T>
struct RamData
{
int   Type;    
T * value;
};
//
template<class T>
using mymap = std::map<int, RamData<T>>;

    int
main(int argc, char **argv)
{
    mymap<int> amap;

    RamData<int> a{10, NULL};

    amap[0] = a;

    cout << amap[0].Type << endl;
    
    return 0;
}

gcc  6.3.0

msvc 2015

都没问题。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式