【发布时间】:2015-11-14 08:29:46
【问题描述】:
给出两个类 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]
并返回 {}(返回 {})给我另一个警告:
返回对临时 [-Wreturn-local-addr] 的引用
所以我的问题是我可以返回什么而不给出警告或错误?
【问题讨论】:
标签: c++ c++11 null smart-pointers return-type