如何在多态中使用boost::smart_ptr?
Boost 智能指针可以与多态性一起使用,但是如何强制转换子类返回指针?
using namespace boost;
// ...
shared_ptr<SuperClass> a_ptr(new SubClass);
// ...
shared_ptr<SubClass> b_ptr = (shared_ptr<SubClass>)a_ptr; // Doesn't compile
最后一行无法编译并给出 error C2440: 'typecast' :无法从 'boost::shared_ptr
' 转换为 'boost::shared_ptr< ;T>
'
Boost smart pointers can be used with polymorphism, but how do you cast the subclass back to the pointer?
using namespace boost;
// ...
shared_ptr<SuperClass> a_ptr(new SubClass);
// ...
shared_ptr<SubClass> b_ptr = (shared_ptr<SubClass>)a_ptr; // Doesn't compile
The last line doesn't compile and gives error C2440: 'type cast' : cannot convert from 'boost::shared_ptr
<T>
' to 'boost::shared_ptr<T>
'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要使用
static_pointer_cast
:(还有
dynamic_pointer_cast
和const_pointer_cast
分别用于执行动态和const强制转换。)You need to use
static_pointer_cast
:(There are also
dynamic_pointer_cast
andconst_pointer_cast
for performing dynamic and const casts respectively.)