我为任意模板迭代器构建了一个模板,但它不起作用,我无法弄清楚为什么......有人可以帮助我吗?
模板:
template<typename type1,typename type2>
void printmap(map<type1,type2>&thismap)
{
for(map<type1,type2>::iterator it = thismap.begin(); it != thismap.end(); ++it)
{
//do something
}
}
Run Code Online (Sandbox Code Playgroud)
显示的错误是:

有人可以帮助我吗?谢谢:)
轻松飘逸的美丽,型号:
for(typename map<type1,type2>::iterator it = thismap.begin(); it != thismap.end(); ++it)
Run Code Online (Sandbox Code Playgroud)
原因是:
在合格的依赖类型之前,您需要typename
请参阅此处了解详情.
或者,您可以在循环外部使用typedef使其更具可读性:
typedef typename map<type1, type2>::iterator mapIt;
for(mapIt it = thismap.begin(); it != thismap.end(); ++it){
...
}
Run Code Online (Sandbox Code Playgroud)