有没有办法通过任何其他类访问子类的函数?

问题描述 投票:0回答:1

我有超类 A,及其子类 B 和 C。

我有D班,以及它的成员:

A* aArray[20]

但是在 aArray 中,只有 B 和 C 对象。

我想实现一个函数来计算这个数组中B的数量,但我想不出有效的解决方案。

我的解决方案是在每个类中写getType函数,在D的函数中检查是否是'a','b','c'。

例如,对于子类B:

virtual char getType() const{
    return 'b'    
};

这是实现这个的正确方法吗?

c++ class oop c++17 subclass
1个回答
0
投票
int countBs() const
{
   int count=0;
   for (const A* item: aArray)
   {
      if (dynamic_cast<const B*>(item)) count++;
   }
   return count;
}

注意:在大多数情况下,拥有原始指针的 C 数组是不好的......-ish。您很可能想使用智能指针(

std::unique_ptr
,可能),如果它确实是固定的 20 个项目,则使用
std::array
,如果它是可变的,则使用
std::vector

© www.soinside.com 2019 - 2024. All rights reserved.