我试图做类似的事情:
class Base {
public:
Base() {
cout << typeid(*this).name() << endl;
}
...
};
class Derived : public Base { ... }
class MoreDerived : public Derived { ... }
Derived d;
MoreDerived m;
Run Code Online (Sandbox Code Playgroud)
问题是,Base当我需要看到Derived和时,我总是被打印到屏幕上MoreDerived.有没有办法让typeid以派生类的方式工作?或者还有另一种方法typeid吗?
注意:我正在为已经编码的套件添加功能,所以我不想在基类中添加虚方法,派生类本身会返回此值.此外,不担心运行时开销,这将是调试编译开关的一部分.