gpt4 book ai didi

c++ - 什么是正确的风格来表明没有什么可返回的?

转载 作者:行者123 更新时间:2023-11-30 02:31:30 24 4
gpt4 key购买 nike

<分区>

我使用 unordered_map 的 unordered_map 存储对象:

std::unordered_map<int, std::unordered_map<int, WorldObject>> _worldObjects;

我使用这个函数检索一个对象:

   WorldObject& objectAtLocation(int x,int y){
if(_worldObjects.find(x)!=_worldObjects.end() && _worldObjects[x].find(y)!= _worldObjects[x].end()){
//Contains an object
}else{
//Does not contain an object at that location. What should I return ?
}
}

如果在 x,y 处没有存储对象,那么在此函数中指示该对象的正确方法是什么?

例如,我可以这样修改函数:

//return value indicating presence of object, output the variable that data is copied into.
bool objectAtlocation(int x,int y,WorldObject& output);

有什么建议吗?

编辑:只使用指针更好吗?

std::unordered_map<int, std::unordered_map<int, WorldObject*>> _worldObjects;

所以我可以这样做:

WorldObject* objectAtLocation(int x,int y){
WorldObject* result = nullptr;

if(_worldObjects.find(x)!=_worldObjects.end() && _worldObjects[x].find(y)!= _worldObjects[x].end()){
//Contains an object
result = _worldObjects[x][y];
}else{
//Does not contain an object at that location. Returning nullptr:
}

return result;
}

编辑:在坐标 (x,y) 处没有对象并不异常(exception)。因此我不需要抛出异常。我只想指出那个位置什么也没有。

由于我是 C++ 新手,您的评论可能无法完全理解您的答案,您能否提供示例代码?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com