首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从C++函数返回多个错误码

如何从C++函数返回多个错误码
EN

Stack Overflow用户
提问于 2009-06-01 21:38:11
回答 9查看 3.6K关注 0票数 3

从C++函数返回成功或一个或多个错误代码的好方法是什么?

我有一个名为save()的成员函数,它保存到每个成员变量中,至少有十个成员变量保存到,为了调用save(),我想知道调用是否失败,如果是,哪个成员变量(一些是硬失败,一些是软失败)。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-06-01 21:41:20

你可以返回一个有多个错误字段的对象,也可以使用‘out’参数。

如何做到这一点取决于你的设计,以及你到底想要返回什么。一种常见的场景是,当您需要报告状态代码以及各种类型的消息时。这有时是这样做的,函数返回状态代码作为返回值,然后通过'out‘参数返回消息状态。

如果你只是返回一组“代码”,那么构造一个结构类型并返回它可能更有意义。在这种情况下,我很容易将其作为输出参数传递,并让该方法在内部更新它,而不是每次都分配一个新的参数。

你打算这样做一次还是多次?

票数 7
EN

Stack Overflow用户

发布于 2009-06-01 21:47:19

我知道这不能真正回答你的问题,但是...

在C++中,您应该使用异常而不是返回错误代码。错误码是最常用的库,它们不想强制库用户使用特定的错误处理约定,但在C++中,我们已经有了stdexcept。当然,可能有不使用异常的原因,比如编写嵌入式代码或内核扩展。

票数 6
EN

Stack Overflow用户

发布于 2009-06-01 21:54:18

我通常使用boost::tuple

代码语言:javascript
运行
复制
typedef boost::tuple<int,int> return_value;

return_value r = my_function();

int first_value = boost::get<0>( r );
int second_valud = boost::get<1>( r );

编辑

您还可以使用boost::tie从元组中提取值:

代码语言:javascript
运行
复制
boost::tie( first_value, second_value ) = r;
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/936928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档