gpt4 book ai didi

c++ - boost::shared_polymorphic_downcast 在 boost 1.53.0 中消失了。我应该用什么代替?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:19:21 26 4
gpt4 key购买 nike

boost::shared_polymorphic_downcast 在 boost 1.52.0 之间消失了和 1.53.0 . release notes 中对此没有提及。 ,并且提交 (r81463) 仅包含神秘的日志消息“更新 shared_ptr 转换。”

我不清楚我现在应该使用什么,或者为什么删除此功能。有人可以帮忙吗?

编辑:感谢大家富有洞察力的评论。我发现自己有点沮丧,因为 boost 会在没有任何理由或通知的情况下在版本中做出向后不兼容的更改,而且我也感到沮丧的是它们删除了有用的功能。但是根据响应,我可以用两行代码而不是一行代码来完成我想做的事情,所以我认为这就足够了。尽管如此,我仍将这个问题“悬而未决”,因为没有人提供一种简单的方法来获取 boost::shared_polymorphic_downcast 的旧行为;也就是说,在启用调试时使用 dynamic_cast,在未启用时使用 static_cast

最佳答案

使用 boost::dynamic_pointer_cast .

它所说的更新是为了配合C++11的设计。在 C++11 中,指针转换被概括为函数 std::dynamic_pointer_cast (和 friend )允许我们写:

template <typename PointerToBase> // models Base* in some way
void foo(PointerToBase ptr)
{
auto ptrToDerived = std::dynamic_pointer_cast<Derived>(ptr);
}

所以PointerToBase可能是原始的 Base*std::shared_ptr<Base> , 没有我们写案例。

Boost当然只是想尽可能地匹配C++。

关于c++ - boost::shared_polymorphic_downcast 在 boost 1.53.0 中消失了。我应该用什么代替?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14743071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com