gpt4 book ai didi

c++ - 函数按值返回对象,如果对象不存在则不返回任何对象

转载 作者:行者123 更新时间:2023-11-30 01:57:37 25 4
gpt4 key购买 nike

按值返回类对象的函数的最佳签名是什么,或者如果对象不存在则返回一些特殊的东西?

对于返回多个对象的函数,函数原型(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com