我正在尝试实现状态机。状态机必须对“拥有”它的成员的对象产生影响。

但是,我显然不能在“Game”类中包含“StateMachine”,而不能在“StateMachine”类中包含“Game”标题。

我如何解决这个问题?

最佳答案

由于您的客户端类是成员而不是继承的子类,因此您无法访问父级的任何私有(private)状态(我确定您知道),因此您只能选择以下几种:

  • 公开暴露父级中的某些状态并欺骗(但这是较差的设计,应避免使用)
  • 给 parent 一个某种形式的公共(public)通知界面,并使用它(比上面更好,但仍然不是很好)
  • 将回调传递给客户端(一种非常c的程序员类型的解决方案)
  • 使用某种信号/插槽机制来通知父级发生了一些有趣的事情。如果您使用的是任何大型框架(Qt等),
  • 可能已经可用

    关于c++ - 影响 “HAS-A Parent”的C++状态机,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3129015/

    10-12 00:20
    查看更多