gpt4 book ai didi

c++ - 具有自定义返回类型和 "false"返回条件的函数?

转载 作者:IT老高 更新时间:2023-10-28 21:49:20 25 4
gpt4 key购买 nike

我有一个返回自定义类结构的函数,但是我应该如何处理我希望通知用户该函数失败的情况,如返回 false.

我的函数看起来像这样:

Cell CSV::Find(std::string segment) {
Cell result;
// Search code here.
return result;
}

所以当成功时,它会返回正确的结果,但是当它可能失败时我应该如何处理呢?

我考虑在 Cell 中添加一个 bool 方法来检查 Cell.data 是否为空(Cell.IsEmpty())。但我是否以一种过于复杂的方式思考这个问题?

最佳答案

有三种通用方法:

  • 使用异常(exception)。这就是 Bathsheba 的回答。
  • 返回 std::optional<Cell> (或其他类型,可能有也可能没有实际的 Cell )。
  • 返回 bool , 并添加 Cell &参数。

哪一个最好取决于您打算如何使用此功能。如果主要用例是传递一个有效的段,那么一定要使用异常。

如果这个函数的部分设计是它可以用来判断一个段是否有效,异常(exception)是不合适的,我的首选是std::optional<Cell> .这可能在您的标准库实现中尚不可用(它是 C++17 功能);如果没有, boost::optional<Cell> 可能有用(如 Richard Hodges 的回答中所述)。

在评论中,而不是 std::optional<Cell> , 用户您建议 expected<Cell, error> (不是标准的 C++,而是为 future 的标准提出的,并且在此之前可以在 std 命名空间之外实现)。这可能是一个很好的选择,可以添加一些关于为什么没有 Cell 的指示。可以找到 segment传入的参数,如果有多种可能的原因。

我包括第三个选项主要是为了完整性。我不推荐它。这是其他语言中流行且普遍良好的模式。

关于c++ - 具有自定义返回类型和 "false"返回条件的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48109570/

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