gpt4 book ai didi

c++ - 返回一个空对象而不是对 vector 的引用

转载 作者:行者123 更新时间:2023-11-30 03:47:21 25 4
gpt4 key购买 nike

给定两个类 A 和 B,其中 B 有一个 A 的 uinque_ptr!

class B {
unique_ptr<A> a;
B() {
}
~B() {
}
}

并且 A 有一个返回其自身的 unique_ptr vector 的方法,如下所示:

   vector<unique_ptr<A>> const& A::getObjects() const {
return this->myVector;
}

现在我想在 B 中实现一个方法,该方法检查 A 的 unique_ptr 是否存在返回 A 中的 vector ,否则返回对空 vector 的引用或 Null 作为错误:

 vector<unique_ptr<A>> const& B::getObjects()const{
if (this->a.get()!=nullptr){
return this->a->getObjects()
}
//ToDo an empty object or null
}

我的问题是我可以在上面的函数中返回什么?返回 nullptr 会产生编译错误。返回以下代码:

vector 结果; 返回结果;

会引起警告:引用返回的局部变量结果 [-Wreturn-local-addr]

并返回 {}(return {})给我另一个警告:

返回对临时 [-Wreturn-local-addr] 的引用

所以我的问题是我可以在不给出警告或错误的情况下返回什么?

最佳答案

So my question is what can I return without giving a warning or an error?

你可以有一个static vector<unique_ptr<A>> nullresult;在你的函数中,并返回那个以防万一:

vector<unique_ptr<A>> const& B::getObjects()const{
static vector<unique_ptr<A>> nullresult;
if (this->a.get()!=nullptr){
return this->a->getObjects()
}
return nullresult;
}

关于c++ - 返回一个空对象而不是对 vector 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33706563/

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