当尝试从我得到的函数返回shared_ptr时: 返回的局部变量'recipe'的引用[-Werror = return-local-addr]
我哪里出错了?
shared_ptr<Recipe>& Group::addRecipe(const string& groupName, unsigned int autherId, const string& recipeName){
shared_ptr<Recipe> recipe(new Recipe(recipeName, autherId));
recipes.push_back(recipe);
return recipe;
}
返回shared_ptr的正确方法是什么?
答案 0 :(得分:8)
该功能的签名未显示,但听起来好像它可能会返回shared_ptr<Recipe>&
。返回对临时的引用是一个很大的禁忌,因为一旦函数退出,引用的对象就会被销毁。只需按价值返回。