c++ - 使不可变类型可变(consts 和 boost)

标签 c++ boost mutable

我正在为我无法更改的代码库开发一项功能(除了我正在编写的内容),这里有一些类型:

// Pointer to a mutable thingy
typedef boost::shared_ptr<Thingy>       MPtr;

// Pointer to an immutable thingy
typedef boost::shared_ptr<const Thingy> Ptr;

现在,我有一个 MPtr 类型的对象,我需要将其分配给 Ptr 类型的对象,但我不能(编译器告诉我没有可能的转换)。使用 const_cast 似乎也无济于事:

MPtr foo = const_cast<MPtr*>(moo);

我收到一条错误消息,指出它无法更改基础类型。关于如何解决此问题的任何想法?

最佳答案

MPtr foo = boost::const_pointer_cast<Thingy>(moo);

关于c++ - 使不可变类型可变(consts 和 boost),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16158844/

相关文章:

c++ - odeint 简单的 1d ode 示例无法编译

c++ - Boost MSM 库给出错误

Rust - 为什么借用 &mut 两次时它不会给我一个错误

ocaml - 如何使用 OCaml/Reason 在模块中创建内部值(value)

c++ - 为什么在使用字符串文字初始化后无法将字符分配给字符数组?

c++ - C++ 中作为参数的不同类型的函数

c++ - 确定比较中文字的有效类型

c++ - push_back(value)自动减少1

boost - 加入线程 : "resource deadlock avoided"

c# - 从 using 语句中修改值类型是未定义的行为吗?