我有一个带有私有std :: map的C ++基类,query_map
在构造时填充了新的指针。在析构函数中,我经历并删除所有指针以避免内存泄漏。派生类将从基类实现纯虚函数,我希望此函数的实现具有对query_map
的读访问权限,但不能写访问权限(因为这样做会导致析构函数出现seg-fault) 。当然我想过制作纯虚函数const,但是当我真的想要只生成query_map
const时,它会锁定所有成员变量以及非const成员函数。由于我们的目标平台和交叉编译器,我无法使用C ++ 11或更高版本。
让整个函数const成为我唯一的选择吗?
答案 0 :(得分:3)
使query_map
成为私有字段,并提供一个受保护的访问器函数,该函数返回对它的const引用:
private:
std::map<...> query_map;
protected:
std::map<...> const & get_query_map() const { return query_map; }
答案 1 :(得分:2)
通过const getter函数提供对query_map的访问。