gpt4 book ai didi

c++ - 有效地改变子类中成员变量的常量

转载 作者:太空宇宙 更新时间:2023-11-04 15:51:45 25 4
gpt4 key购买 nike

在开发游戏时,我设计了一个类,在正常操作中它有一个 const 成员变量,如下所示:

class Foo {
/* ... */
protected:
const boost::unordered_map<short, short> m_map;
};

但是,在随附的游戏编辑器中,我想重用 Foo 类,但提供一种方法来编辑这个 const 成员,因为它用于渲染游戏(我想重用编辑器的渲染器)。因此,我计划对 Foo 类进行子类化,以便提供更改各种属性的方法以及序列化数据以保存编辑器数据的方法。我想知道在将成员保持为 const 的同时是否有一种优雅的方法来做到这一点,或者是否有更好的设计?

到目前为止我想到的选项是:

  • 删除 const 关键字,不提供用于更改变量的公共(public)接口(interface)
  • 更改渲染器以使用接口(interface)并在 Foo 和 Foo 的编辑器版本中分别实现它
  • 重新实现 Foo 的公共(public)接口(interface),为 Foo 的编辑器版本使用新的可变映射
  • 完全是别的东西?

乍一看,从语言的角度来看,接口(interface)路径似乎是最干净的,但是会为涉及的每个类带来一个接口(interface)(抽象基类),这是一个体面的努力。欢迎提出建议和想法。 (注意:我很难想出一个描述性的标题;也欢迎提出建议。)

最佳答案

如果让你的变量成为非 constprotected 感觉太麻烦,也许你可以设计一个变量是非 constprivate,并提供 protected 成员函数以在您首先创建变量 const 时使用您想到的任何约束来操作它。

关于c++ - 有效地改变子类中成员变量的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7019310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com