ProjectileManager erbt von EntityManager, die dies als geschützte Mitglied hat:Berufung operator() Syntax
struct EntityDeallocator{
void operator()(std::pair<sf::String,std::shared_ptr<Entity>> p)const{
p.second.reset();
std::cout << "object removed" << std::endl;
}
};
Die ProjectileManager Update-Funktion:
void ProjectileManager::update(double frameTime){
for(std::map<sf::String,std::shared_ptr<Entity>>::const_iterator it = entities.begin();it!=entities.end();it++){
it->second->update(frameTime);
it->second->getObject()->draw(*SfmlFramework::Singleton()->window);
if(it->second->getObject()->getSprite()->GetPosition().x > SfmlFramework::Singleton()->window->GetWidth() || it->second->getObject()->getSprite()->GetPosition().y > SfmlFramework::Singleton()->window->GetHeight()){
//I want to call EntityDeallocator on it
}
}
}
Wie würde ich EntityDeallocator nennen auf it
? Ich habe EntityDeallocator (it) versucht, aber das sagt it
ist eine nicht referenzierte lokale Variable.
Müssen Sie ein Entity_Deallocator-Objekt instanziieren, bevor Sie es aufrufen? Zum Beispiel Entity_Deallocator() (it). (Entferne mich von meinem C++ - Compiler nur, weil ich sonst niemanden sehen kann, der kommentiert werden kann. Wenn dieser Kommentar dein Problem löst, dann kannst du die Antwort selbst posten. Wenn sie es nicht löst, ignoriere es. Gut Glück.) Update: Ich sehe, dass @SanJacinto jetzt geantwortet hat. Ich denke, dass er recht hat. – thb