<分区>
我只是有一个难题,当函数可能失败时,我应该如何从函数返回智能指针。我可以选择以下选项之一:
- 返回指针,如果函数失败则抛出异常:
std::shared_ptr foo() { // ... if (!ok) throw; return ptr; }
- 返回指针,如果函数失败则返回空指针
std::shared_ptr foo() { // ... if (!ok) return std::shared_ptr(); return ptr; }
- 通过引用传递指针,并返回 bool 标志
bool foo(std::shared_ptr& ptr) { // ... if (ok) ptr = ...; return ok; }
是否有任何最佳实践、指南、如何报告该功能未正确执行?或者它通常是特定于项目的?
感谢您的回答