我有超类 A,及其子类 B 和 C。
我有D班,以及它的成员:
A* aArray[20]
但是在 aArray 中,只有 B 和 C 对象。
我想实现一个函数来计算这个数组中B的数量,但我想不出有效的解决方案。
我的解决方案是在每个类中写getType函数,在D的函数中检查是否是'a','b','c'。
例如,对于子类B:
virtual char getType() const{
return 'b'
};
这是实现这个的正确方法吗?
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
。