boost::shared_ptr; boost::shared_ptr;

发布于 2024-09-05 05:12:23 字数 502 浏览 5 评论 0原文

我想从 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

骄傲 2024-09-12 05:12:24

boost::const_pointer_cast 您想要使用的函数:

boost::shared_ptr<const int> ci(new int(42));
boost::shared_ptr<int> i(boost::const_pointer_cast<int>(ci));

这​​对您不起作用吗?我使用 Boost 1.43 和 Visual C++2010 C++0x 实现进行了测试 - 两者都没有问题。

boost::const_pointer_cast is the function you want to use:

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.

似梦非梦 2024-09-12 05:12:24

请注意,至少可以说,如果共享的 const T 突然发生变化,其他“股东”将会非常感到惊讶......

Note that other "shareholders" will be very surprised, to say the least, if a shared const T suddenly changes...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文