constの正当性に関する簡単な質問があります。
私はこのクラスを持っています:
template <class T>
class Foo
{
public:
std::map<std::string, boost::any> members;
template <typename T>
std::vector<T>& member(const std::string& memberName)
{
return boost::any_cast<std::vector<T>&>(members[memberName]);
}
};
次に、次の機能を含むファンクターがあります。
bool operator()(Foo& foo) const
{
std::vector<T> & member = foo.member<T>(_memberName);
ここで私を混乱させているのは、非constメンバーのgetter関数を呼び出しているため、constを参照してFooを渡すことができないことです。その署名に関して、これはoperator()がfooを変更するという印象を与えます。
これを修正する必要がありますか?修正する場合はどうすればよいですか?