[英]Move std::vector<std::unique_ptr<T>> to std::vector<std::shared_ptr<T>>
[英]recreate(reassign) a std::shared_ptr or std::unique_ptr
我想要一个托管指针(唯一的或共享的),并能够用新的内存重新分配它,并且还要确保使用托管指针删除了旧的内存(应该是这样)。
struct MyStruct
{
MyStruct(signed int) { }
MyStruct(unsigned float) { }
};
std::unique_ptr<MyStruct> y(new MyStruct(-4)); // int instance
std::shared_ptr<MyStruct> x(new MyStruct(-5));
// do something with x or y
//...
// until now pointers worked as "int" next we want to change it to work as float
x = new MyStruct(4.443);
y = new MyStruct(3.22); // does not work
我将如何以最干净的方式实现这一目标?
您有几种选择:
x = std::unique_ptr<MyStruct>(new MyStruct(4.443));
x = std::make_unique<MyStruct>(4.443); // C++14
x.reset(new MyStruct(4.443));
y = std::shared_ptr<MyStruct>(new MyStruct(3.22));
y = std::make_shared<MyStruct>(3.22);
y.reset(new MyStruct(3.22));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.