从基类中识别派生类

bof*_*jas 4 c++ polymorphism virtual pointers abstract

有没有办法检查两个实例是否是相同的派生类?就像是:

Base *inst1 = new A();
Base *inst2 = new B();
Base *inst3 = new A();


bool b1 =  (inst1->class== inst2->class); //<-- should evaluate to false
bool b1 =  (inst2->class== inst3->class); //<-- should evaluate to true
Run Code Online (Sandbox Code Playgroud)

显然,我可以向基类添加一个虚函数,并实现每个派生类以返回唯一值.但是,我宁愿不必为派生类实现任何特定的东西,因为我正在基于派生这个基类来创建API.

Pet*_*ker 8

typeid(*inst1) == typeid(*inst2)
Run Code Online (Sandbox Code Playgroud)

假设Base至少有一个虚函数.否则,typeid将无法获得正确的派生类型.