我有一个函数模板来打印带有对象指针的字符串映射:
//template function to print map of pointers
template <class T2>
void printMap(std::map<string, T2*>&_map)
{
//test print line
cout << "Test function template for map print" << endl;
std::map<string, T2*>::iterator iter;
for (iter = _map.begin(); iter != _map.end(); iter++)
{
//call print function for type
iter->second->print();
}
}
我正在尝试实施它:
printMap<myObject>(std::map<string, myObject*>&myMapOfObjects);
我正在
“不允许使用错误类型名称”
我在linux服务器上也遇到错误了;预计在它之前并且它是未宣布的。
我已经使用基本功能模板测试了文件,并且函数正在传递给文件,这就是我编写这个函数的方式,它对我正在做的事情不满意。 我已经在这方面工作了几天而无法找到解决方案,我相信对于有经验的程序员来说这是显而易见的,谢谢。
另一个问题:
我可以将字符串作为单独的类型传递,因此有T1和T2,template<class T1, class T2>
所以我可以将模板用于各种地图,即使用整数?
答案 0 :(得分:1)
调用该函数的语法错误。你可以这样做:
printMap(myMapOfObjects);
编译器将推导出模板参数。或者,如果你想明确它:
printMap<myObject>(myMapOfObjects);
std::map<string, myObject*>&
文本不属于调用。