сделать неизменяемый тип изменяемым (consts и boost)

Я работаю над функцией для кодовой базы, которую я не могу изменить (за исключением того, что я пишу), и здесь есть несколько типов:

// 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

Решение

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]