按值返回类对象的函数的最佳签名是什么,或者如果对象不存在则返回一些特殊的东西?
对于返回多个对象的函数,函数原型(prototype)为
QList<X> getSomeXOrNothing();
- 有对象返回对象列表,没有对象返回空列表,完全符合我的需求,使用起来也很方便。
现在,我知道函数只能返回单个对象或什么都不返回,最好的签名是什么?返回原始指针是不可取的,因为它有可能导致错误泄漏。
我在返回共享指针或仍然返回具有单个值的列表之间进行辩论:
QList<X> getSingleXOrNothing();
QSharedPointer<X> getSingleXOrNothing();
但我想知道是否有更好的方法来做到这一点——共享指针增加了不必要的开销,而返回列表是有争议的,因为我知道列表只能包含一个对象。
编辑: 所有 QList、SharedPointr 和 QVariant 都是可接受的选项,但我正在为每个字节都很重要的嵌入式设备开发,并且将有很多调用此函数 - 所以试图找到给定条件的最佳容器 - 它是一个对象或什么都没有。
最佳答案
您可以使用“选项模式”。基本思想是:
template <typename T>
class Optional {
private:
bool valueIsPresent;
T value;
}
然后,您可以从函数返回 Optional<YourType>
.然后,客户端代码可以在尝试访问和使用值之前检查值是否有效存在。
关于c++ - 函数按值返回对象,如果对象不存在则不返回任何对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18495067/