C++让类函数传递对类本身的引用

C++ Have class function pass reference to class itself?

本文关键字:引用 类函数 C++      更新时间:2023-10-16

基本上,我有一个class World,它包含了与我的游戏状态相关的所有数据。这个类具有类似getPlayerPosition()hasLeader()的功能,它还可以访问游戏中每个可绘制对象的位置。

world.update()内部,我有一个运行中的FSM。我将省略细节,但本质上我有另一个对象,它有一个名为test(World& world, SceneNode& node)的函数,它引用了世界,这样它就可以测试一些东西,比如某个节点与玩家的距离。我有很多这样的"条件"对象,它们做不同的事情,所以它们每个都需要访问世界的不同部分,这就是我在世界中通过的原因;。

但是world.update()调用了这个测试函数!我能让世界通过一个自身的参考吗?在这个项目的另一个构建中,我认为我们试图通过(*this),但我们得到了SegFaults,我的合作伙伴认为这是因为(*this)

*这不会导致段故障。但是,如果test()调用world.xxx()函数,而xxx()可能调用test(),则会得到递归。如果是这种情况,则会导致堆栈溢出,并可能发生段故障。