我有一个返回可选结构的方法,如下所示:
auto getBook(const std::string &title) const -> std::optional<Book>;
我想在另一个返回可选作者的方法中调用此方法。问题是实现应该始终检查 getBook 返回的可选项是否在调用方法之前填写,如下所示:
auto getAuthor(const std::string &title) const -> std::optional<Author>
{
const auto optBook = getBook(title);
if (optBook.has_value)
return optBook->getAuthor();
else
return std::nullopt;
}
有没有办法以更短的方式编写它,以便如果填充了可选项,则调用该方法,但如果可选项为空,std::nullopt
则返回。像这样的东西(我知道这目前不起作用,但你明白我的意思):
auto getAuthor(const std::string &title) const -> std::optional<Author>
{
return getBook(title).getAuthor();
}