给出两个A和B类,其中B的uinque_ptr为A!
class B {
unique_ptr<A> a;
B() {
}
~B() {
}
}
和A有一个方法返回自身的unique_ptr向量,如下所示:
vector<unique_ptr<A>> const& A::getObjects() const {
return this->myVector;
}
现在我想在B中实现一个方法,它检查A的unique_ptr是否已存在,返回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
}
我的问题是我可以在上面的功能中返回什么?返回nullptr会产生编译错误。返回以下代码:
矢量结果; 返回结果;
将引发警告:引用本地变量结果返回[-Wreturn-local-addr]
并返回{}(return {})再给我一个警告:
返回对临时[-Wreturn-local-addr]
的引用所以我的问题是我可以在不发出警告或错误的情况下返回什么内容?
答案 0 :(得分:2)
所以我的问题是我可以在不发出警告或错误的情况下返回什么内容?
您可以在函数中使用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;
}