SmartPointer:在基类和派生类之间转换 [英] SmartPointer : cast between base and derived classes

查看:137
本文介绍了SmartPointer:在基类和派生类之间转换的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设您有这样的功能:

SmartPtr<A> doSomething(SmartPtr<A> a);

这样的类:

class A { }
class B : public A { }

现在我这样做:

SmartPtr<A> foo = new B();
doSomething(foo);

现在,我想回到 SmartPtr< B& code>对象从 doSomething

SmartPtr<B> b = doSomething(foo); 

有可能吗?我必须做什么样的投射?

现在,我只是发现了一些我相信的丑陋:

Is it possible ? What kind of casting do I have to do ?
Right now, I just found something I believe ugly :

B* b = (B*)doSomething().get()

没有任何访问 SmartPtr doSomething()代码。

推荐答案

而不是这样做:

B *b = dynamic_cast< B* >( doSomething.get() );

但您必须检查b是否为NULL。

but you have to check if b is NULL.

这篇关于SmartPointer:在基类和派生类之间转换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆