boost::shared_ptr; boost::shared_ptr;
我想从 boost::shared_ptr
中转换出 const-ness,但我 boost::const_pointer_cast
不是答案。 boost::const_pointer_cast
想要一个 const boost::shared_ptr
,而不是 boost::shared_ptr
。让我们放弃强制性的“你不应该这样做”。我知道......但我需要这样做......那么最好/最简单的方法是什么?
为了清楚起见:
boost::shared_ptr<const T> orig_ptr( new T() );
boost::shared_ptr<T> new_ptr = magic_incantation(orig_ptr);
我需要知道 magic_incantation()
I want to cast the const-ness out of a boost::shared_ptr
, but I boost::const_pointer_cast
is not the answer. boost::const_pointer_cast
wants a const boost::shared_ptr<T>
, not a 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()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
boost::const_pointer_cast
是您想要使用的函数:这对您不起作用吗?我使用 Boost 1.43 和 Visual C++2010 C++0x 实现进行了测试 - 两者都没有问题。
boost::const_pointer_cast
is the function you want to use: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.
请注意,至少可以说,如果共享的
const T
突然发生变化,其他“股东”将会非常感到惊讶......Note that other "shareholders" will be very surprised, to say the least, if a shared
const T
suddenly changes...