我期待找到使用这种代码安全地以正确的方式返回时,存在对象:希望在何处检查是否从函数与循环
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