返回我會後我的代碼,然後再解釋我的查詢:我會在這種情況下
typedef std::shared_ptr<SEntity> Entity;
//Scene_Ids is an enum
static std::map<Scene_Ids, std::vector<Entity> > m_scene_entities;
std::shared_ptr<SEntity>& SEntityManager::getEntity(const std::string& entity_name)
{
int counter = 0;
for (auto iter = m_scene_entities.begin(); iter != m_scene_entities.end(); ++iter)
{
if (iter->second[counter]->getId() == entity_name)
return iter->second[counter];
counter++;
}
//What would I return if the entity couldn't be found?
}
的代碼基本上可以解釋這一切。我有一種方法,如果在映射內部的std :: vector中找到「實體」,它將返回對它的std :: shared_ptr類型的引用。但是,由於我沒有返回指針,我不能返回nullptr。我可以在失敗的情況下返回什麼。
此外,我知道std :: shared_ptr是爲了在幾個不同的地方有副本。爲此,我是否真的需要返回一個引用,或者我可以通過值來返回它嗎?
謝謝!
您能否將'shared_ptr'返回給'nullptr'? – templatetypedef
是不是像'std :: map :: find' vs'std :: map :: operator []'一樣的問題? – dyp
@templatetypedef OP返回一個引用。 – dyp