C++ 返回emptyObject而不是对向量的引用
给出了两个类A和B,其中B的单位为AC++ 返回emptyObject而不是对向量的引用,c++,c++11,null,smart-pointers,return-type,C++,C++11,Null,Smart Pointers,Return Type,给出了两个类A和B,其中B的单位为A class B { unique_ptr<A> a; B() { } ~B() { } } B类{ 独特的ptr a; B(){ } ~B(){ } } A具有如下返回其自身的唯一_ptr向量的方法: vector<unique_ptr<A>> const& A::getObjects() const { return this->myVect
class B {
unique_ptr<A> a;
B() {
}
~B() {
}
}
B类{
独特的ptr a;
B(){
}
~B(){
}
}
A具有如下返回其自身的唯一_ptr向量的方法:
vector<unique_ptr<A>> const& A::getObjects() const {
return this->myVector;
}
向量常量&A::getObjects()常量{
返回此->myVector;
}
现在我想在B中实现一个方法,该方法检查a的唯一_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
}
向量常量&B::getObjects()常量{
如果(this->a.get()!=nullptr){
返回此->a->getObjects()
}
//ToDo空对象或null
}
我的问题是我可以在上面的函数中返回什么?返回null ptr会导致编译错误。返回以下代码:
矢量结果;
返回结果
将导致警告:返回对局部变量结果的引用[-Wreturn local addr]
返回{}(返回{})给我另一个警告:
返回对临时[-Wreturn local addr]的引用
所以我的问题是,我能返回什么而不给出警告或错误
所以我的问题是,我能返回什么而不给出警告或错误
您可以有一个静态向量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;
}
向量常量&B::getObjects()常量{
静态矢量结果;
如果(this->a.get()!=nullptr){
返回此->a->getObjects()
}
返回结果;
}
谢谢!我搜索了一下。我认为抛出异常比使用静态向量更好。@Govan当然,这是另一种选择。我刚才回答了你具体的问题。