我正在研究一个我无法改变的代码库功能(除了我正在编写的内容),这里有一些类型:
// 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);
我收到一条错误消息,说它无法更改基础类型。关于如何解决这个问题的任何想法?
答案 0 :(得分:1)
MPtr foo = boost::const_pointer_cast<Thingy>(moo);