CPP类写保护成员

时间:2014-10-13 15:04:21

标签: c++ class const member

我有一个带有私有std :: map的C ++基类,query_map在构造时填充了新的指针。在析构函数中,我经历并删除所有指针以避免内存泄漏。派生类将从基类实现纯虚函数,我希望此函数的实现具有对query_map的读访问权限,但不能写访问权限(因为这样做会导致析构函数出现seg-fault) 。当然我想过制作纯虚函数const,但是当我真的想要只生成query_map const时,它会锁定所有成员变量以及非const成员函数。由于我们的目标平台和交叉编译器,我无法使用C ++ 11或更高版本。

让整个函数const成为我唯一的选择吗?

2 个答案:

答案 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的访问。