有没有办法用基类指针确定子类的类型?
我在类构造函数中声明了一个指针 在.h文件中
baseclass *screen;
构造函数中的
screen = new childclass();
让我们说baseclass有5个不同的子类,在我的程序中,我将指针切换为指向各种子对象,如何确定屏幕当前指向的对象的类型?
答案 0 :(得分:7)
<强>唐&#39;吨强>
使用虚拟分派为不同的派生类型实现不同的行为。
答案 1 :(得分:1)
你可以比较typeid的:typeid(somepointer)== typeid(someclass)来找出实例化的实际对象。
答案 2 :(得分:0)
这是你如何做到的。但正如许多其他人所说,这不是正确的做法。派生类应该处理不同的行为。
#include <iostream>
#include <typeinfo>
using namespace std;
class Base{
public:
virtual void func();
};
class Derived : public Base{
public:
virtual void func(){
return;
}
};
class AnotherDerived : public Base{
public:
virtual void func(){
return;
}
};
int main(){
Base *dp = new Derived;
Base *adp = new AnotherDerived;
cout << typeid(*dp).name() << endl;
cout << typeid(*adp).name() << endl;
return 0;
}