返回一个空对象而不是对向量的引用
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;
}
给出两个类 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;
}