C++对元素数组应用"typing"
C++ applying "typing" on an array of elements
编辑:这是一个学校作业,我没有决定这个设计,所以请不要建议改变它。
请考虑以下层次结构:
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==
进行比较。
实现将知道引用相等是否足够,或者它需要一个字符串比较,不要试图猜测它。
相关文章:
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- c++r值引用应用于函数指针
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 有没有任务栏API可以立即应用注册表更改
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- TMap::Emplace() 在应用现有密钥时会覆盖吗?
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- C++对元素数组应用"typing"