[英]boost::shared_ptr<const T> to boost::shared_ptr<T>
I want to cast the const-ness out of a boost::shared_ptr
, but I boost::const_pointer_cast
is not the answer. 我想从
boost::shared_ptr
抛出const-ness,但是我的boost::const_pointer_cast
不是答案。 boost::const_pointer_cast
wants a const boost::shared_ptr<T>
, not a boost::shared_ptr<const T>
. boost::const_pointer_cast
想要一个const boost::shared_ptr<T>
,而不是一个boost::shared_ptr<const T>
。 Let's forego the obligatory "you shouldn't be doing that". 让我们放弃强制性的“你不应该这样做”。 I know... but I need to do it... so what's the best/easiest way to do it?
我知道......但我需要这样做......那么最好/最简单的方法是什么?
For clarity sake: 为清楚起见:
boost::shared_ptr<const T> orig_ptr( new T() );
boost::shared_ptr<T> new_ptr = magic_incantation(orig_ptr);
I need to know the magic_incantation() 我需要知道magic_incantation()
boost::const_pointer_cast
is the function you want to use: boost::const_pointer_cast
是你想要使用的函数:
boost::shared_ptr<const int> ci(new int(42));
boost::shared_ptr<int> i(boost::const_pointer_cast<int>(ci));
Does that not work for you? 这不适合你吗? I tested that with both Boost 1.43 and the Visual C++2010 C++0x implementation--no issues with either.
我使用Boost 1.43和Visual C ++ 2010 C ++ 0x实现进行了测试 - 两者都没有问题。
请注意,至少可以说,如果共享的const T
突然改变,其他“股东”会非常惊讶 ......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.