enable_shared_from_this and inheritance

陌路散爱 提交于 2019-12-04 15:15:51

问题


I've got a type which inherits from enable_shared_from_this<type>, and another type that inherits from this type. Now I can't use the shared_from_this method because it returns the base type and in a specific derived class method I need the derived type. Is it valid to just construct a shared_ptr from this directly?

Edit: In a related question, how can I move from an rvalue of type shared_ptr<base> to a type of shared_ptr<derived>? I used dynamic_cast to verify that it really was the correct type, but now I can't seem to accomplish the actual move.


回答1:


Once you obtain the shared_ptr<Base>, you can use static_pointer_cast to convert it to a shared_ptr<Derived>.

You can't just create a shared_ptr directly from this; that would be equivalent to:

shared_ptr<T> x(new T());
shared_ptr<T> y(x.get()); // now you have two separate reference counts


来源:https://stackoverflow.com/questions/4491420/enable-shared-from-this-and-inheritance

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!