c ++异常消息传递

时间:2010-07-14 18:45:38

标签: c++ exception message

我正在开发一个相当强大的2D游戏引擎,作为一个基础,其他游戏可以作为一个有趣的项目建立(我知道已经做到这一点,但这没有乐趣)。

我正试图找出一种在引擎内的类之间进行消息传递的好方法。起初我正在考虑使用异常的heirarchy并在需要时抛出它们。但是当我开发这种方式时,我意识到抛出了大量的异常,因为它们被用于相当常见的事情(处理寻路和单元定位的子程序的一部分以及需要测试状态的东西)游戏板很多)。异常被用于诸如路径中的路径查找以及需要绕过它的东西,它将抛出TileOccupied异常并且路径查找可以优雅地处理并继续。可以预料,这会产生很多例外。

互联网告诉我,由于他们需要做的所有运行时处理,例外是昂贵的。但是它们可以完美地处理我需要的东西,即使通过分支子程序来指示何时发生了某些事情或某些事情没有达到预期,它能够将一条消息传回给调用者。

在c ++中有没有干净/有效的方法呢?或者,如果我使用这种类型的通知,我是否构建错误的东西?我还在学习,所以任何建议都会非常感激(我愿意阅读/学习你可以引用我的方式的任何参考资料)

修改 我试图用标准的c ++ btw做这个。我在linux上编写它,希望它能够编译并且可以独立运行。我现在正在使用Boost。

3 个答案:

答案 0 :(得分:2)

虽然这需要明确注册,但这听起来像是您需要回调(例如Boost.Function)或信号(例如Boost.Signals / Signals2)。

答案 1 :(得分:0)

您是否有任何理由未使用事件队列和/或观察者设置?

答案 2 :(得分:0)

例外是这样做的错误方法。通常的建议是直接的事件/听众设计,但在任何非平凡的系统中很快就会失控。我会指出你whiteboard design进行松散的沟通。