这是一个关于 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 来传递 Foo,因为我正在调用非 const 成员 getter 函数。关于它的签名,这给人的印象是 operator() 改变了 foo。
我应该纠正这个吗?如果是这样,如何纠正?