我有以下两个函数:
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和非const版本。我已经看到了使用const cast处理成员函数的方法,但这些是非成员函数,我希望使用模板解决此问题。我该如何编写一个模板函数以减少代码重复?我甚至不确定从哪里开始。
Thing
中添加一个成员变量,比如m_AllowChange
,根据它是false还是true,允许对Thing
进行更改。但当然,这种便利性取决于Thing
类有多复杂。 - macroland