我对我拥有的一段代码感到担忧。我有组件和一个存储组件的对象。问题是在更新期间组件可以告诉从对象中删除组件。但它是从另一个函数调用的。
void Object::update() { //using std::map here
for(ComponentMap::iterator i = components.begin(); i != components.end(); ++i) {
(*i).second->update();
}
}
void HealthComponent::update() {
if(health <= 0) object->removeComponent("AliveComponent"); //this is wrong logic. but its just an example :D
}
void Object::removeComponent(string component) {
ComponentMap::iterator i = components.find(component);
if(i == components.end()) return;
components.erase(i);
}
假设我有很多组件——健康、活着、图形、物理、输入等。
我尝试了这样的事情(使用一些测试组件)并且在更新期间没有错误。但我真的很担心。它可以在将来弹出我的错误吗?如果是,如何解决?
提前致谢,
加西姆