替换共享指针的内容?

Kai*_*aan 5 c++ boost shared-ptr

我有一个在系统中共享的共享指针。稍后,我想替换这些共享指针所指向的实际内容,但仍保持所有共享指针有效,因此它们在内部指向此新对象。

有一种简单的方法可以使用共享指针吗?

我正在寻找这样的东西-伪代码

typedef boost::shared_ptr<Model> ModelPtr

ModelPtr model1 = ModelPtr(new Model);
ModelPtr model2 = model1;

// make something like 'model1.get() = new Model' so model1, model2 both points to a new model
Run Code Online (Sandbox Code Playgroud)

编辑:我想要的效果,但少花哨

ModelPtr model1 = ModelPtr(new Model("monkey"));
memcpy(model1 .get(), new Model("donkey"), sizeof(Model));
Run Code Online (Sandbox Code Playgroud)

awe*_*oon 6

如果我正确理解您的话,则可以使用重载的解除引用运算符:

auto a = std::make_shared<int>(42);
auto b = a;
*a = 43;

std::cout << *b << std::endl;
Run Code Online (Sandbox Code Playgroud)

输出:

43
Run Code Online (Sandbox Code Playgroud)