我意识到有很多类似的问题,但我找不到任何可以解决我的问题(阅读:我没有真正理解答案,因此我可以将其应用于我的案例)
我有以下功能:
void printVariable(map<string, bool*>::iterator it)
{
cout << it->first << " " << *(it->second) << endl;
}
现在,如果我有一个,map<string, bool*> mapping
我可以执行以下操作:printVariable(mapping.begin());
这行得通,现在我也有 aamap<string, 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'
我想我可以通过重载函数来轻松解决这个问题。但我想知道为什么上述方法不起作用。
Edit2:删除了声称正确解决方案错误的文本