如何使用dynamic_cast获取对象类型?

时间:2017-06-27 14:28:21

标签: c++ dynamic-cast

我正在做作业,我陷入了困境: 我已经完成了所有工作,但是在特定的类中有一个函数,我不知道如何实现。 我有一个名为A的类,比如两个继承自A的类,我们称之为B和C. 所以基本上主类是A,继承类是B和C,我有一组用于这些类型的元素(A的指针集),set<A*>,并且具有标识每个类的枚举,如下所示: enum { A , B ,C};

该函数必须过滤集合并返回一个具有枚举类型的集合,如:

set<A*> MainClass::getByType(Type type) const { }

问题是我们不允许使用关键字typeid,而是我们必须使用dynamic_cast来确定类型。

我的问题是: 当我传递set<A*>中的每个元素时,我如何使用dynamic_cast知道该元素(A或B或C)的类型?

我不明白, 请帮助我,这是作业的最后一件事,我被卡住了, 提前谢谢你&lt; 3

1 个答案:

答案 0 :(得分:0)

要解决您的任务,您不需要知道特定实例属于哪个类,而是过滤指向特定类的指针。因此,定义一个函数,使用switch检查指针是否是正确的类:

-openmp

然后使用std::copy_if过滤您需要的类型并将它们放在结果集中或只使用范围循环。如果不清楚这段代码是如何工作的,那么检查行可以用更明确的方式编写:

setup.py