gpt4 book ai didi

c++ - 将 std::shared_ptr 设置为指向引用

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:27:17 24 4
gpt4 key购买 nike

class a
{
private:
std::shared_ptr <std::string> sptr;
public:
void set(std::string & ref)
{
sptr = &ref; //error
}
};

解决方案是什么?我需要将引用保留为参数,并且我需要将私有(private)指针设为 shared_ptr。

最佳答案

要将新的原始指针分配给共享指针并使共享指针获得所有权,请使用成员函数reset:

std::shared_ptr<Foo> p;

p.reset(new Foo);

共享指针共享对象的所有权,因此几乎不可能让您的sptr 明智地在任意引用上共享所有权。 (例如 sptr.reset(&ref) 几乎肯定是完全错误的。)适当的做法是制作字符串的新拷贝,即 sptr.reset(new std: :string(ref)),或者更好:

sptr = std::make_shared<std::string>(ref);

关于c++ - 将 std::shared_ptr 设置为指向引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15024602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com