我可以使用该类中的函数删除动态分配的类吗?

时间:2009-10-11 21:29:02

标签: c++ self-destruction

我正在为游戏写一个州经理。我已经掌握了大部分逻辑,因为我想要这样做。 我希望状态(将是类)在StateManager类的堆栈中处理。每个状态都有暂停功能,堆栈将是STL堆栈。

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

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

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

4 个答案:

答案 0 :(得分:6)

参见C ++ - FAQ-lite:Is it legal (and moral) for a member function to say delete this?

  

只要你小心,对象就可以自杀(删除它)。

答案 1 :(得分:0)

你可以,甚至可以打电话:

delete this;

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

相关:

答案 2 :(得分:0)

不确定

void cleanup(){
 delete this;
}

当然,你需要确定很多事情(如果你试图用堆栈上创建的实例来做这件事,那么你将会遇到不好的事。

答案 3 :(得分:0)

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