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

上帝

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

千伏

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

在这种情况下,最直接的方法是 return std::unique_ptr<std::vector<int>>- 在这种情况下,可以 return nullptr

其他选项:

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

最好的方法实际上取决于用例。例如,如果大小为 0 的结果向量等价于“失败” - 随意在代码中使用这种知识,只需检查返回向量是否为空即可知道函数是失败还是成功。

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章