2

我正在为游戏编写状态管理器。对于我想如何做到这一点,我已经掌握了大部分逻辑。我希望在 StateManager 类的堆栈中处理将是类的状态。每个状态都会有暂停功能,堆栈将是一个 STL 堆栈。

当一个状态完成了它需要做的事情(例如:从暂停屏幕,用户点击“返回游戏”),它需要从堆栈中移除并删除。我目前的逻辑(不幸的是,我无法测试)是这样的:

国家完成了它的工作。在它的更新函数中,当它发现它已经完成时,它会调用一个函数来清理状态。此函数将处理任何需要绑定的即时松散端(如果有的话),从状态管理器堆栈调用 pop 函数,并删除自身。

我要问的是:我可以从内部删除一个类吗?

4

4 回答 4

6

请参阅 C++-FAQ-lite:成员函数说是否合法(和道德)delete this?

只要你小心,一个对象自杀是可以的(删除这个)。

于 2009-10-11T21:36:53.267 回答
0

你可以,甚至可以调用:

delete this;

但它有点毛茸茸,丑陋,可能很危险......

有关的:

于 2009-10-11T21:34:29.147 回答
0

当然:

void cleanup(){
 delete this;
}

当然,您需要确定很多事情(其中最重要的一点是,如果您尝试使用在堆栈上创建的实例来执行此操作,您将会遇到问题。

于 2009-10-11T21:34:45.217 回答
0

是 -delete this;有效。只要确保这是与在执行删除的函数中完成的类相关的最后一件事。

于 2009-10-11T21:35:07.317 回答