返回对象或 NULL 值的方法

Method returning an object or a NULL value

本文关键字:方法 NULL 对象 返回      更新时间:2023-10-16

我有一个返回对象(表示数据库中记录的对象(的函数,但如果数据库中不存在请求的数据,它应该返回一个 NULL 值。根据这个答案,不可能设置对象NULL,但是可以返回指向对象的指针,并且指针可以是NULL。所以我在我的方法上做到了,但是 - 由于指针是本地对象 - 应用程序无法按预期工作(实际上,它确实适用于 Windows,但不适用于 Linux(。调查该问题后,我发现返回指向局部变量的指针不是一个好主意。处理我的案件的最佳解决方案是什么?在这种情况下,使用智能指针似乎过于复杂。

您可以使用std::optional(或boost::optional(来表示可能存在或不存在的值,而无需任何动态分配。

std::optional<int> read_from_database(const std::string& id)
{
return db.has(id) ? std::optional<int>{} : db.get(id); 
}