Как можно преобразовать shared_ptr, который указывает на объект константы к shared_ptr, который указывает на объект неконстанты. Я пытаюсь сделать следующее:
boost::shared_ptr<const A> Ckk(new A(4));
boost::shared_ptr<A> kk=const_cast< boost::shared_ptr<A> > Ckk;
Но это не работает.
'boost :: const_pointer_cast' сделает то, о чем вы просите, но обязательная вторая половина ответа состоит в том, что вам, вероятно, не следует его использовать. В 99% случаев, когда кажется, что вам нужно отбросить свойство const переменной, это означает, что у вас есть недостаток дизайна. Иногда Const - это больше, чем просто приукрашивание витрины, и отказ от него может привести к неожиданным ошибкам.
Не зная больше деталей вашей ситуации, нельзя сказать наверняка. Но никакое обсуждение const-cast не будет полным без упоминания этого факта.
правильный путь должен быть таким
boost::shared_ptr<A> kk (boost::const_pointer_cast<A>(Ckk));