gpt4 book ai didi

c++ - 将 unique_ptr 作为 shared_ptr 传递到 vector 中

转载 作者:行者123 更新时间:2023-11-27 22:41:09 26 4
gpt4 key购买 nike

下面是一个测试,可以帮助您更深入地了解 shared_ptrunique_ptr:

#include <string>
#include <memory>
#include <vector>

std::vector<std::shared_ptr<int> > vec_ptr;

int* get()
{
for (size_t i = 0; i < 1; ++i)
{
vec_ptr.push_back(std::make_unique<int>());
}
return vec_ptr.back().get();
}
int main()
{
int obj = 5;
int* ptr = get();
ptr = &obj;

std::cout << *ptr << std::endl;
std::cout << *vec_ptr[0].get() << std::endl; //expect: 5, but it is 0
}

显然没有任何东西分配给 vec_ptr。有人可以给我解释一下吗?

最佳答案

看起来你想做的事:

*ptr = obj;

代替

ptr = &obj;

前者将整数obj复制到ptr指向的空间。后者(您正在做的)重新指向 ptr 以指向 obj

关于c++ - 将 unique_ptr 作为 shared_ptr 传递到 vector 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48948813/

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