【发布时间】:2013-05-16 05:32:30
【问题描述】:
我正在尝试创建一个通用的map,它将any datatype 作为它的第二个元素。
但是当我尝试创建一个对象时,我收到错误argument list for class template is missing
template<typename T1>
class MAP{
public:
std::map<string, T1>Hello;
//MAP(){Hello["Hello"] = 3;}
};
int main()
{
MAP map1;//Error happens here
return 0;
}
这里出了什么问题?
【问题讨论】:
-
MAP不是类型。MAP<int>是。MAP<char>是。MAP<double>是。MAP<MAP>是。 -
如果您想要一个地图对象能够同时存储多种不同类型的元素,您需要停下来再想一想。你会用这样的地图做什么?你将如何操作它的元素?否则你已经有了一个通用地图,它叫做
std::map。 -
@chris
MAP<MAP>不是类型,而是错误。MAP<MAP<int>>是一种类型。 -
@Angew,糟糕,感谢您纠正我。我本来想说
MAP<YourOwnClass>,然后我把它切换到MAP,因为它已经定义了,我想我忘了这意味着我需要一个额外的模板参数:p
标签: c++ visual-studio-2010 templates arguments