我们可以返回一个元组
std::pair<bool, std::string> fooFunction();
Run Code Online (Sandbox Code Playgroud)
但这使得创建返回值时代码变得多余,并强制调用者处理元组(在 c++17 中使用结构绑定很容易)
if ( okayCondition)
return {true, {}};
else
return { false, "blabla error"};
Run Code Online (Sandbox Code Playgroud)
或者我们可以使用
std::optional<std::string> fooFunction();
Run Code Online (Sandbox Code Playgroud)
这对于返回 bool 的现有函数很有趣,因为由于 std::optional 运算符 bool,大多数调用者不需要更新
//Legacy code ok
if (fooFunction())
Run Code Online (Sandbox Code Playgroud)
我知道一种更重的方法,一个模板化的 ReturnStatus 类,它会在调用者不测试返回状态值的情况下抛出。
还有其他方法吗?
Mar*_*som -3
C++ 的处理方式是根本不返回状态。如果出现错误,则抛出异常。错误代码都是 1980 年代的。
| 归档时间: |
|
| 查看次数: |
169 次 |
| 最近记录: |