Ecco una semplice domanda relativa alla correttezza delle cost.Corrispondenza di Const per la funzione Getter
ho questa classe:
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]);
}
};
Ho poi un funtore che include quanto segue:
bool operator()(Foo& foo) const
{
std::vector<T> & member = foo.member<T>(_memberName);
Ciò che mi confonde è che non posso passare Foo con riferimento a const, dal momento che sto chiamando la funzione getter del membro non const. Per quanto riguarda la sua firma, ciò dà l'impressione che l'operatore() cambi foo.
Devo correggere questo e se sì come?
Ma la domanda è: possiamo organizzare il passaggio di 'foo' da' const' reference? –