我正在为游戏写一个州经理。我已经掌握了大部分逻辑,因为我想要这样做。 我希望状态(将是类)在StateManager类的堆栈中处理。每个状态都有暂停功能,堆栈将是STL堆栈。
当状态完成它需要做的事情时(例如:从暂停屏幕,用户点击“返回游戏”),它需要从堆栈中删除并删除。我现在的逻辑(不幸的是我无法测试)是这样的:
国家完成了它的工作。 在它的更新函数中,当它发现它完成时,它将调用一个函数来清理状态。 此函数将处理需要绑定的任何立即松散的结束(如果有的话),从状态管理器堆栈调用pop函数,并自行删除。我要问的是:我可以从内部删除一个类吗?
答案 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;
有效。请确保这是在执行删除的函数中完成的与类相关的最后一件事。