Oto proste pytanie dotyczące poprawności stałej.Poprawność Const dla funkcji Gettera
mam tej klasy:
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]);
}
};
Mam następnie funktor, który obejmuje następujące elementy:
bool operator()(Foo& foo) const
{
std::vector<T> & member = foo.member<T>(_memberName);
Co myli mi o to, że nie mogę przejść Foo przez odniesienie do const, bo "Wywołuję funkcję pobierającą non const member. W odniesieniu do podpisu wywołuje to wrażenie, że operator() zmienia się w foo.
Czy powinienem to poprawić, a jeśli tak, to w jaki sposób?
Ale pytanie brzmi, czy możemy zorganizować przekazanie 'foo' przez referencję' const'? –