如果我有一个find
有时无法找到所需事物的函数,我倾向于使该函数返回一个指针,以便 anullptr
指示未找到该事物。
例如
Student* SomeClass::findStudent(/** some criteria. */)
如果 Student 存在,它会返回一个指向找到的Student
对象的指针,否则它会返回nullptr
。
我也看到boost::optional
有人为此目的而提倡。例如,当您想要实现一个可以返回“无”的函数时,何时使用 boost::optional 以及何时使用 std::unique_ptr?
我的问题是,在这种情况下,返回指针不是最好的解决方案。ie 有可能找不到查询的项目,在这种情况下返回nullptr是一个完美的解决方案。使用类似的东西boost::optional
(或任何其他类似的解决方案)有什么好处?
请注意,在我的示例中,findStudent
只会返回指向 . 拥有的对象的指针SomeClass
。