【问题标题】:CPP Class Write-Protect MemberCPP 类写保护成员
【发布时间】:2014-10-13 15:04:20
【问题描述】:

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

让整个函数 const 真的是我唯一的选择吗?

【问题讨论】:

  • 你想说什么?最好贴一些代码!
  • 你读过吗?这不是我的代码的问题,而是为我的代码选择正确的抽象和保护的问题......
  • 变量名(query_map)听起来像一个方法名!我很困惑!

标签: c++ class constants member


【解决方案1】:

query_map 设为私有字段,并提供一个受保护的访问器函数,该函数返回一个对其的常量引用:

private:
    std::map<...> query_map;

protected:
    std::map<...> const & get_query_map() const { return query_map; }

【讨论】:

    【解决方案2】:

    通过 const getter 函数提供对 query_map 的访问。

    【讨论】:

      猜你喜欢
      • 2017-08-01
      • 2016-10-01
      • 2011-09-27
      • 2014-06-07
      • 2016-07-23
      • 2014-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多