c ++:如何从函数返回shared_ptr

时间:2014-06-26 21:32:07

标签: c++ function return shared-ptr

当尝试从我得到的函数返回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的正确方法是什么?

1 个答案:

答案 0 :(得分:8)

该功能的签名未显示,但听起来好像它可能会返回shared_ptr<Recipe>&。返回对临时的引用是一个很大的禁忌,因为一旦函数退出,引用的对象就会被销毁。只需按价值返回。