返回对象或NULL值的方法

时间:2018-05-04 15:37:02

标签: c++ pointers

我有一个函数返回一个对象(一个表示数据库中记录的对象),但如果请求的数据不在DB中,它应该返回一个NULL值。根据{{​​3}}回答,不可能将对象设置为NULL,但是可以返回指向对象的指针,指针可以为NULL。所以我在我的方法上做了,但是 - 因为指针是本地对象 - 应用程序不能按预期工作(实际上,它在Windows上运行,但在Linux中不运行)。在调查此问题后,我发现this不是一个好主意。处理我案件的最佳解决方案是什么?在这种情况下,使用智能指针似乎过于复杂。

1 个答案:

答案 0 :(得分:3)

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

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