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}}

解决方案 »

  1.   

    在A中设置一个虚函数用于显示类名.则B\C分别设置这个函数
    那么只要对象调用这个函数不就可以知道类了吗?
      

  2.   

    谢谢 fanqing。(我一定会给你分数的)又引起的问题:
    1,有没有更好的解决办法?c++语言本身有没有提供这种功能?
    2,typeid()可以得到 类变量的类型, 
    但是好像不可以得到 类指针变量的类型?(typeid()关于指针的用法是什么样?)
      

  3.   

    typeid 在这里好象用不上因为它们的父类相同
    我以前用的死办法~~
    在 A中添加一保护成员 int m;在B的构造中写 m=0;
     在C的构造中写 m=1;
      

  4.   

    你再试试
    RUNtime_CLass
    getClassName
    之类
    不过我觉得行不通
      

  5.   

    // A 可以设成纯虚基类
    pB = dynamic_cast<B*>(aA[i]);
    if(pB != NULL) // 是B类型
      

  6.   

    使用dynamic_cast 的时候,编译器要打开运行时类型信息选项 VC是 /GR