Ann*_*inn 7 c++ inheritance templates shared-ptr c++11
我有一个结构来管理从基类派生的对象Entity,但不控制它们的生命周期.我希望这个结构被赋予弱指针,weak_ptr<Entity>以便它可以知道对象是否已在其他地方被破坏.
但是,在共享指针所在的管理结构之外,我希望共享指针更具体shared_ptr<SpecificEntity> (SpecificEntity使用Entity作为基类).
有没有办法实现这个,或类似的东西?
Ker*_* SB 12
这很可能.您可以随时转换shared_ptr<Derived>为shared_ptr<Base>含蓄,和你有其他的方向std::static_pointer_cast和std::dynamic_pointer_cast它做你所期望的东西, -也就是你最终的共享与原始指针所有权不同类型的新指针.例:
std::shared_ptr<Base> p(new Derived);
std::shared_ptr<Derived> q = std::static_pointer_cast<Derived>(p);
std::shared_ptr<Base> r = q;
Run Code Online (Sandbox Code Playgroud)
或者,更多C++ 11风格:
auto p0 = std::make_shared<Derived>();
std::shared_ptr<Base> p = p0;
auto q = std::static_pointer_cast<Derived>(p);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1458 次 |
| 最近记录: |