gpt4 book ai didi

c++ - 我将如何重新实现 dynamic_cast?

转载 作者:行者123 更新时间:2023-11-30 05:20:03 26 4
gpt4 key购买 nike

<分区>

Stroustrup 书中的一个练习如下:

Write a template ptr_cast that works like dynamic_cast, except that it throws bad_cast rather than returning 0.

我设法想出的唯一解决方案是通过适当包装 dynamic_cast 来作弊:

template<typename Dst, typename Src>
Dst ptr_cast(Src* p) {
Dst pt = dynamic_cast<Dst>(p);
if (!pt)
throw std::bad_cast();
return pt;
}

class B {
public:
virtual ~B();
};

B::~B() {}

class D : public B {};
class C {};

int main() {
B* pb = new D;
D* pd = ptr_cast<D*>(pb); // passes
C* pc = ptr_cast<C*>(pb); // throws as planned

return 0;
}

不过,我一直怀疑这不是作者的意思。有人有更好的主意吗?该项目标有一颗星,这意味着它一定是非常明显的东西。

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