Я работаю над функцией для кодовой базы, которую я не могу изменить (за исключением того, что я пишу), и здесь есть несколько типов:
// 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);
Других решений пока нет …