我正在为我无法更改的代码库开发一项功能(除了我正在编写的内容),这里有一些类型:
// 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);
我收到一条错误消息,说它无法更改基础类型。关于如何解决此问题的任何想法?