ProjectileManager從EntityManager的繼承,其中有這樣一個受保護的成員:調用operator()語法
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()(它)。 (遠離我的C++編譯器,我的評論只是因爲我目前沒有其他人可以發表評論,如果這個評論能夠解決你的問題,那麼你可以自己發佈答案,如果它不能解決問題,請不要理會。 )更新:我看到@SanJacinto已經回答了。我認爲他是對的。 – thb 2012-03-24 12:58:49