似たような質問がたくさんあることに気付きましたが、私の問題を解決するものは見つかりませんでした (読んでください: 私は自分のケースに適用できるように答えを本当に理解していませんでした)
私は次の機能を持っています:
void printVariable(map<string, bool*>::iterator it)
{
cout << it->first << " " << *(it->second) << endl;
}
今、map<string, bool*> mapping
私が持っている場合、次のことができます:printVariable(mapping.begin());
これは機能します。今は aa もありmap<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: 正しい解決策が間違っていると主張するテキストを削除しました