从C++函数返回成功或一个或多个错误代码的好方法是什么?
我有一个名为save()的成员函数,它保存到每个成员变量中,至少有十个成员变量保存到,为了调用save(),我想知道调用是否失败,如果是,哪个成员变量(一些是硬失败,一些是软失败)。
发布于 2009-06-01 21:41:20
你可以返回一个有多个错误字段的对象,也可以使用‘out’参数。
如何做到这一点取决于你的设计,以及你到底想要返回什么。一种常见的场景是,当您需要报告状态代码以及各种类型的消息时。这有时是这样做的,函数返回状态代码作为返回值,然后通过'out‘参数返回消息状态。
如果你只是返回一组“代码”,那么构造一个结构类型并返回它可能更有意义。在这种情况下,我很容易将其作为输出参数传递,并让该方法在内部更新它,而不是每次都分配一个新的参数。
你打算这样做一次还是多次?
发布于 2009-06-01 21:47:19
我知道这不能真正回答你的问题,但是...
在C++中,您应该使用异常而不是返回错误代码。错误码是最常用的库,它们不想强制库用户使用特定的错误处理约定,但在C++中,我们已经有了stdexcept。当然,可能有不使用异常的原因,比如编写嵌入式代码或内核扩展。
发布于 2009-06-01 21:54:18
我通常使用boost::tuple
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从元组中提取值:
boost::tie( first_value, second_value ) = r;https://stackoverflow.com/questions/936928
复制相似问题