这个问题已经在这里有了答案:
9年前关闭。
我在下面的第二行上收到错误“将引用返回临时”。
class Object : public std::map <ExString, AnotherObject> const {
public:
const AnotherObject& Find (const ExString& string ) const {
Object::const_iterator it = find (string);
if (it == this->end()) { return AnotherObject() };
return ( it->second );
}
}
我的课实现了std::map。
我是C++的新手,所以我猜测它只是语法错误。有什么帮助吗?
最佳答案
如果您的函数如下所示:
AnotherObject& getAnotherObject()
{
. . .
Object::const_iterator it = find ("lang");
if (it == this->end()) { return AnotherObject() };
. . .
}
问题在于,您返回的AnotherObject()将在函数退出后立即销毁,因此函数的调用者将具有对虚假对象的引用。
但是,如果您的函数按值返回:
AnotherObject getAnotherObject()
然后在原件销毁之前先进行复印,这样就可以了。