C++从函数返回null结构
C++ return null struct from function
我有一个类似的结构
struct AUTO{
int weight;
string name;
}
我有一个函数,它通过传递name
来返回一个结构
AUTO autoByName(String name, AUTO a[], int ll)
{
for(int i = 0; i < ll; i++)
{
if (name == a[i].name)
{
return a[i];
}
}
// AND HERE ?????
}
但我不知道函数末尾会返回什么。结构是否有null
?
您有很多选择:
- 给
AUTO
一种表示"无值"的方法。例如,通过使重量为-1。或者在上面加上一面旗帜。这太难看了;我不推荐它,尽管它在实践中有点常见 - 返回一个(智能)指针而不是值。这样,在出现错误/没有值的情况下,您可以返回
nullptr
。这也很丑陋,因为它迫使你处理指针,原因不是很充分 - 返回一个单独的值以表示成功。例如,向函数添加
bool &wasFound
参数 - 返回
boost::optional
或std::pair<AUTO, bool>
以完成几乎相同的事情,但都包含在返回值中。这可能是最干净的。例如,std::map::find
就是这样工作的 - 引发异常。如果调用方不尝试查找不存在的项目,则这可能是可以接受的。换句话说,如果"未找到"只是一个返回值,那么就不要抛出异常。如果"未找到"确实是一个程序错误条件,那么抛出异常实际上可能是有意义的。如果你不确定,不要抛出异常
我推荐#4,或者在极少数情况下推荐#5。
相关文章:
- 如何循环打印顶点结构
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 预处理器:插入结构名称中的前一个行号
- 在访问类的树层次结构中的对象时避免使用 null 指针
- c++ 结构指针在初始化为 NULL 时无法读取内存
- C++11 如何将结构重置为 null?
- 如果将其添加为全局结构,则如何将其添加为NULL
- 将结构元素地址设置为C 中的null(单链接列表)
- 如何使用空的"null"或"空"元素扩展C++结构/类
- C++如何将结构数组初始化为null,然后在while循环中检查该数组的元素是否为null
- 用null C 初始化结构阵列
- 如何在C++11中将结构中的指针初始化为null
- 当结构增长时,指向矢量中元素的指针将设置为 NULL
- 如何检查结构在 C 或 C++ 中是否为 NULL
- 设置两个结构体相等后,指针为NULL
- 如何在创建新结构体时给成员指针赋NULL值
- 检查结构体是否为NULL或未设置,即使它的有操作符相等
- C++从函数返回null结构
- 是否有可能以NULL终止c++结构体的二维数组?