c++ - 替换共享指针的内容?

标签 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

编辑: 我想要这个效果,但不那么花哨

ModelPtr model1 = ModelPtr(new Model("monkey"));
memcpy(model1 .get(), new Model("donkey"), sizeof(Model));

最佳答案

如果我没理解错的话——你可以使用重载的取消引用运算符:

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

std::cout << *b << std::endl;

输出:

43

关于c++ - 替换共享指针的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17641682/

相关文章:

c++ - 在 C++11 中将结构作为输出参数传递

c++ - 混合 C 和 C++、原始指针和( boost )共享指针

c++ - 有谁知道 OpenSocial REST 的任何 C/C++ 开源客户端库?

c++ - 使用输入重定向,如何在C中读取文件并获取字符串?

c++ - boost 测试

c++ - shared_ptr、weak_ptr 和循环依赖

c++ - reinterpret_cast<char*>(p) 或 static_cast<char*>((void*)p)) 用于字节指针差异,哪个更好?

c++ - boost ptr_vector 迭代器

c++ - boost & g++ : no matching function for call to 'current_path()'

c++ - 在 cmd pmt 中执行带空格的文件名 从 C++ 程序传递