【发布时间】:2012-12-02 19:27:55
【问题描述】:
我正在开发一个 C++ 项目,专门实现一个调车场算法。
我有一个函数可以创建一个超类shared_ptr 的向量,但是被推入这个向量的类都是基类shared_ptrs。
然后我需要获取这个向量并将其传递给另一个函数,并在 for 循环中对向量的每个元素执行不同的逻辑。然而,我执行的逻辑取决于向量的每个元素中存在哪个基类。
所以基本上我不知道的是如何识别向量的每个元素中的基类类型。当我调试它们时,它们都以类型超类的形式出现。
所以通常我想做这样的事情:
if(vectorElement == baseClass)
{
//do some logic
}
或者,如果有一些我想念的不同方法来执行此操作,我会有兴趣执行此操作。
【问题讨论】:
-
我不能说我 100% 了解你,但你也许正在寻找
dynamic_cast或dynamic_pointer_cast? -
这两个术语基类和超类代表一个类派生自。派生类也称为子类(细微差别:-))。所以请编辑您的帖子以明确
-
可能有一种方法可以在我的解决方案中实现这一点,但我认为我能想到的任何方法都不可行。
-
我认为我确实需要使用 dynamic_pointer_cast,但我对其工作原理的理解并不清楚。如果有人能解释清楚,将不胜感激。
标签: c++ inheritance vector shared-ptr