在以下情况下,如何从列表中删除屏幕?
class ScreenManager {
list<GameScreen> screens;
void removeScreen(GameScreen & screen) {
//screens.remove(screen); // won't work
//screens.erase( remove( screens.begin(), screens.end(), screen ), screens.end() ); // won't work either
}
}
最佳答案
std::remove
(或您的情况下的std::list::remove
)使用比较运算符(operator==
)查找/标识应从容器中删除的对象。
由于使用的是用户定义的GameScreen
类型,因此需要为您的类提供operator==
。因此,在您的类(class)中,您需要实现:
bool operator==( const GameScreen& other ) const {
// do whatever you need to determine whether
// `GameScreen` instance `other` is equal (in value)
// to `this` instance of `GameScreen`
}
然后,
screens.remove( screen);
将起作用。关于c++ - 从std::list中删除对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9933162/