我正在做作业,我陷入了困境:
我已经完成了所有工作,但是在特定的类中有一个函数,我不知道如何实现。
我有一个名为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
答案 0 :(得分:0)
要解决您的任务,您不需要知道特定实例属于哪个类,而是过滤指向特定类的指针。因此,定义一个函数,使用switch检查指针是否是正确的类:
-openmp
然后使用std::copy_if过滤您需要的类型并将它们放在结果集中或只使用范围循环。如果不清楚这段代码是如何工作的,那么检查行可以用更明确的方式编写:
setup.py