我期待找到使用這種代碼安全地以正確的方式返回時,存在對象:希望在何處檢查是否從函數與循環
renderer->renderEntity(entityManager->getEntity("player"));
Entity EntityManager::getEntity(string entityName)
{
for (int index = 0; index < entityVector.size(); ++index)
{
if (entityVector[index].getName() == entityName)
{
return entityVector[index];
}
}
}
從容器中得到內的對象一個類的實例,並且想要檢查它是否存在,所以你沒有對不存在的對象進行調用。
我知道我可以改變的呼籲:
if (entityManager->getEntity("player" != nullptr)
{
renderer->renderEntity("player");
}
我想避免雙重調用來檢查對象存在。我想這可能是一個比語法問題更多的設計。我可以在包含for循環的getEntity()函數中構建錯誤檢查嗎?我不確定,因爲返回值是實體,所以必須返回一個實體對象。 (如果它是一個指針,則相同,這不是我的項目中的代碼,只是一個類似的例子)。
常見的是如何認爲的那個實體名稱將不存在?如果這種情況很少發生,你可以拋出異常。另一種選擇是採用標準庫方法,並將一個迭代器返回給元素,如果它不存在,則返回'entityVector.end()'。 – TartanLlama
如果實體不存在,您的方法應該返回什麼? –
我會建議使用'std :: map' – Paranaix