运行时类型信息 typeid 的严重问题?(回答一定送分) class A//abstract(抽象类)class{...}class B:public A{...}class C:public A{...}main{A* aA[3];aA[0] = new B;aA[1] = new C;aA[2] = new C;for(int i= 0;i<3;i++){A* pA;pA = aA[i];//问题???????????????//如何知道pA所指的对象是B还是C}} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在A中设置一个虚函数用于显示类名.则B\C分别设置这个函数那么只要对象调用这个函数不就可以知道类了吗? 谢谢 fanqing。(我一定会给你分数的)又引起的问题:1,有没有更好的解决办法?c++语言本身有没有提供这种功能?2,typeid()可以得到 类变量的类型, 但是好像不可以得到 类指针变量的类型?(typeid()关于指针的用法是什么样?) typeid 在这里好象用不上因为它们的父类相同我以前用的死办法~~在 A中添加一保护成员 int m;在B的构造中写 m=0; 在C的构造中写 m=1; 你再试试RUNtime_CLassgetClassName之类不过我觉得行不通 // A 可以设成纯虚基类pB = dynamic_cast<B*>(aA[i]);if(pB != NULL) // 是B类型 使用dynamic_cast 的时候,编译器要打开运行时类型信息选项 VC是 /GR 正独自做一个爬虫软件,想做的和百度一样强大。 vc环境使用sdk编程 图形显示的问题 谁有屏蔽IE弹出窗口的例子或代码? 为什么在MAINFRM.h中定义的消息,CMyView中就可以用,而另外定义的类CMyListCtrl中就不能用? 关于variant的问题 我如何写一个功能和性质与拨号向导导出一模一样的拨号连接,急死人了,多谢各位帮忙? 这个问题怎么解决???????? 这个程序哪里错了 请问有沈阳的朋友吗? 结构化异常处理到底有什么bird用?谢谢.^_^ SDK中如何固定窗口呀 如何做一个在后台一直运行的dll,直到装载它的进程退出。
那么只要对象调用这个函数不就可以知道类了吗?
1,有没有更好的解决办法?c++语言本身有没有提供这种功能?
2,typeid()可以得到 类变量的类型,
但是好像不可以得到 类指针变量的类型?(typeid()关于指针的用法是什么样?)
我以前用的死办法~~
在 A中添加一保护成员 int m;在B的构造中写 m=0;
在C的构造中写 m=1;
RUNtime_CLass
getClassName
之类
不过我觉得行不通
pB = dynamic_cast<B*>(aA[i]);
if(pB != NULL) // 是B类型