我想将一个
boost::shared_ptr
中的const属性去掉,但是boost::const_pointer_cast
不是答案。 boost::const_pointer_cast
需要一个const boost::shared_ptr<T>
,而不是boost::shared_ptr<const T>
。 让我们放弃“你不应该这样做”的义务。 我知道...但我需要这样做...那么最好/最简单的方法是什么?
为了清晰起见:
boost::shared_ptr<const T> orig_ptr( new T() );
boost::shared_ptr<T> new_ptr = magic_incantation(orig_ptr);
我需要知道magic_incantation()的魔法咒语。
const_pointer_cast
和C++中的const_cast
一样,可以添加或删除const和volatile限定符,因此如果没有指定目标限定符,则无法知道所需的目标限定符。我很高兴能够帮助到您。 - James McNellis