小编Cid*_*ide的帖子

有效地改变子类中成员变量的constness

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

class Foo {
    /* ... */
protected:
    const boost::unordered_map<short, short> m_map;
};
Run Code Online (Sandbox Code Playgroud)

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

我到目前为止提出的选项是:

  • 删除const关键字并且不提供用于更改变量的公共接口
  • 更改渲染器以使用接口并在Foo和Foo的编辑器版本中单独实现它
  • 重新实现Foo的公共接口,为Foo的编辑器版本使用新的可变映射
  • 还有别的吗?

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

c++

0
推荐指数
1
解决办法
125
查看次数

标签 统计

c++ ×1