を使用してのconstと非constのは非会員機能のためのコードの重複を減らす:は、私は2つの以下の機能を持っているテンプレート
Thing* find_thing_by_name(const String & name, Map<String,Thing*> & thing_map)
{
auto it = thing_map.find(name);
return it->second;
}
const Thing* find_thing_by_name(const String & name, const Map<String,Thing*> & thing_map)
{
auto it = thing_map.find(name);
return it->second;
}
これは私が解決したい問題のためだけの簡単な例です。
これらの関数はまったく同じ本体ですが、私のマップのconstバージョンとnon constバージョンの両方を処理する必要があります。この問題はconstキャストを使ったメンバー関数で処理されていますが、これらは非メンバ関数なので、テンプレートを使用してこの問題を解決したいと思います。コードの重複を減らすテンプレート化された関数を作成するにはどうすればよいですか?私はどこから始めたらいいかわからない。
あなたの質問に直接答えるのではなく、単に「m_AllowChange」のような「Thing」にメンバー変数を追加し、それがfalseかtrueかによって、「Thing」に変更を許可することができます。しかし、もちろん、これの利便性は、「Thing」クラスがどれほど複雑かにかかっています。 – macroland