C++对元素数组应用"typing"

C++ applying "typing" on an array of elements

本文关键字:typing 应用 数组 元素 C++      更新时间:2023-10-16

编辑:这是一个学校作业,我没有决定这个设计,所以请不要建议改变它。

请考虑以下层次结构:

A
/ 
B     E
/ 
C  D

我有一个指向 A (A**( 的指针数组,我需要创建两个方法:

  • 首先计算B型的每个对象及其亲属。
  • 第二个只计算正好 B 类型的对象。

对于第一个,我使用以下代码:

int countTypeOfBs(A** arr, int size){
int count = 0;
for (int i = 0; i < size; i++)
if (dynamic_cast<B *>(arr[i]))
count++;
return count;
}

我坚持第二个,我已经尝试过这个:

int countBs(A** arr, int size){
int count = 0;
for (int i = 0; i < size; i++)
if (!strcmp(typeid((*A[i])).name(), "B"))
count++;
return count;
}

但是我收到一个错误,说表达式必须具有常量值..

我该如何解决这个问题?

编辑:这是一个错字,我不小心使用了A[i]而不是arr[i]。它解决了问题。

typeid

运算符可以应用于类型或表达式,并返回对相应std::type_info对象的引用。这些可以简单地与平等operator==进行比较。
实现将知道引用相等是否足够,或者它需要一个字符串比较,不要试图猜测它。