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
如果这样做不行,请问有什么替代的方法? 展开
好像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
如果这样做不行,请问有什么替代的方法? 展开
1个回答
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
都没问题。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询