ProjectileManager наследует от EntityManager, который имеет это как защищенный член:оператор вызова() Синтаксис
struct EntityDeallocator{
void operator()(std::pair<sf::String,std::shared_ptr<Entity>> p)const{
p.second.reset();
std::cout << "object removed" << std::endl;
}
};
Функция обновления ProjectileManager:
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
}
}
}
Как бы я назвал EntityDeallocator на it
? Я пробовал EntityDeallocator (он), но это говорит о том, что it
является локальной сетью без ссылок.
Вам нужно создать экземпляр объекта Entity_Deallocator до его вызова? Например, Entity_Deallocator() (it). (Вдали от моего компилятора на C++, я комментирую только потому, что на данный момент я не вижу никого другого, чтобы комментировать. Если этот комментарий решает вашу проблему, вы можете опубликовать ответ самостоятельно. Если это не решит его, не обращайте внимания. удача.) Обновление: я вижу, что @SanJacinto теперь ответил. Я думаю, что он прав. – thb