我意识到有很多类似的问题,但我找不到任何能解决我问题的问题(阅读:我没有真正理解答案,所以我无法将其应用于我的案例)
我有以下功能:
void printVariable(map<string, bool*>::iterator it)
{
cout << it->first << " " << *(it->second) << endl;
}
现在,如果我有一个<code>映射<;字符串,bool*>;mapping我可以做以下操作:printVariable(mapping.begin())密码
这是有效的,现在我也有一个<code>映射<;字符串,int*>,并希望能够做同样的事情,所以我想我更改了printVariable函数:
template <typename T>
void printVariable(map<string, T*>::iterator it)
{
cout << it->first << " " << *(it->second) << endl;
}
然而,这会产生编译错误(gcc):
error: variable or field printVariable declared void
error: expected ) before it
我想我可以通过重载函数很容易地解决这个问题。但我想知道为什么上述方法不起作用。
第2版:删除了声称正确解决方案是错误的文本