c – 当返回值为const引用时,如何返回“not found”

前端之家收集整理的这篇文章主要介绍了c – 当返回值为const引用时,如何返回“not found”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个问题,当我使用这样的东西时:
const MyList& my_list = getListForThisRegion(/*region ID,...*/);

当没有找到任何价值时,我不知道该返回什么.

我的问题是,我希望有一种方法可以向调用者发出信号(当从getListForThisRegion返回值时)“找不到值”.如果我返回一个指针,我可以返回nullptr,但我不知道如何使用引用.我能想到的只是有一些MyList类型的静态成员not_found,并返回对它的引用,但它看起来很难看.

是的,我无法返回价值,因为列表是“胖”并经常使用.

编辑:很多很好的答案,但异常不是一个可接受的解决方案,因为它将被提高的次数很高(nbNotFound / nbCalls的百分比很高).
EDIT2:关于boost :: optional – 掌握它有多复杂?我的意思是它需要一些非显而易见的知识(非显而易见的=不仅仅是知道语法的东西)?

解决方法

有两种惯用方法可以解决这个问题:

>更改您的界面以返回一个能够引用任何内容的类型(例如,一个可以为null的指针,一个结束的迭代器).

要么

>如果找不到该项,则抛出异常.

返回一个虚拟对象有点hacky,并且你没有获得任何东西而不是返回指针,因为你仍然必须根据特殊值(null或虚拟对象)检查结果.

猜你在找的C&C++相关文章