gpt4 book ai didi

C++。如何返回空指针而不是函数返回类型?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:14:56 24 4
gpt4 key购买 nike

我有一个检查正则表达式并返回 std::vector<int> 的函数根据正则表达式结果。我需要检查功能是否失败/成功。成功返回 vector 对象,失败返回 nullptr稍后检查if (somefunc() == nullptr) // do smth

最佳答案

返回类型的值std::vector<int>不能是 nullptr .

在这种情况下最直接的方法是返回 std::unique_ptr<std::vector<int>>相反 - 在这种情况下可以返回 nullptr .

其他选项:

  • 失败时抛出异常
  • 使用optional<std::vector<int>>作为返回类型(boost::optionalstd::optional 如果您的编译器具有此 C++17 功能)
  • 返回bool参数并有 std::vector<int>&作为函数的输出参数

最佳方式实际上取决于用例。例如,如果大小为 0 的结果 vector 等同于“失败”——请随意在您的代码中使用此类知识,只需检查返回 vector 是否为空即可了解函数是失败还是成功。

在我的实践中,我几乎总是坚持返回optional (提升或标准,取决于环境限制)。这样的界面是陈述“结果可以存在也可以不存在”这一事实的最清晰的方式。

总而言之——这不是一个只有一个正确解决方案的问题。上面列出了可能的选项 - 选择哪个选项只是您的个人经验和环境限制/惯例的问题。

关于C++。如何返回空指针而不是函数返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44475976/

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