返回一个空对象而不是对向量的引用

returning an emptyObject instead of a reference to a vector

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

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

并且 A 有一个方法 returning 自己的 unique_ptr 向量,如下所示:

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

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

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

我的问题是我可以 return 在上面的函数中做什么? returning nullptr 给出编译错误。 return输入以下代码:

向量结果; return 结果;

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

和 returning {} (return {}) 给我另一个警告:

returning 引用临时 [-Wreturn-local-addr]

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

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

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

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;
 }