gpt4 book ai didi

c++ - 检查类型是否来自给定的父类型

转载 作者:行者123 更新时间:2023-11-30 01:47:51 24 4
gpt4 key购买 nike

我的问题的简化示例:

我有一个抽象类 A。我有两个抽象类 BC 继承自 A。我有很多从 BC 继承的最终类:

class A;
class B : public A;
class C : public A;
class B1 : public B;
class B2 : public B;
class C1 : public C;
class C2 : public C;

我实现了一个接收 A 指针的算法,必须知道该类型是来自 B 还是 C 才能正常工作:

void algorithm(boost::shared_ptr<const A> a)
{
if(*a is a B instance)
// do something
else if(*a is a C instance)
// do something other
}

我如何在没有 C++11 的情况下简单地检查它?

我知道如何使用 typeid(*a) == typeid(C1) 检查最终类型,但我不知道如何检查父类型...

最佳答案

您可以使用 dynamic_pointer_cast :

if (std::dynamic_pointer_cast<B>(a)) {
...
}
else if (std::dynamic_pointer_cast<C>(a) {
...
}

关于c++ - 检查类型是否来自给定的父类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31111461/

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