为对象指针映射编写函数模板时出现问题

时间:2014-11-12 16:40:24

标签: c++ templates pointers map function-templates

我有一个函数模板来打印带有对象指针的字符串映射:

//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>所以我可以将模板用于各种地图,即使用整数?

1 个答案:

答案 0 :(得分:1)

调用该函数的语法错误。你可以这样做:

printMap(myMapOfObjects);

编译器将推导出模板参数。或者,如果你想明确它:

printMap<myObject>(myMapOfObjects);

std::map<string, myObject*>&文本不属于调用。