gpt4 book ai didi

c++ - 智能指针 : cast between base and derived classes

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:48:36 25 4
gpt4 key购买 nike

假设你有这样一个函数:

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

像这样的类:

class A { }
class B : public A { }

现在我这样做:

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

现在,我想取回一个 SmartPtr<B>来自 doSomething 的对象.

SmartPtr<B> b = doSomething(foo); 

这可能吗?我需要做什么样的选角?
现在,我刚发现一些我认为丑陋的东西:

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

重要说明:我无权访问 SmartPtrdoSomething()代码。

最佳答案

除了这样做,你还可以这样做:

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

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

关于c++ - 智能指针 : cast between base and derived classes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5633695/

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