检查基类指针类型的最佳方法是什么?

Ahm*_*aid 1 c++ pointers

我想知道基类指针的运行时类型,我知道你可以使用dynamic_cast.有没有更好的方法?

MSa*_*ers 7

dynamic_cast只会确认你的猜测,即使这并不完美.如果C继承自继承自A的B,dynamic_cast<B*>((A*)&theC)则可行.typeid会给你实际的类型,但是对某些东西都没用.例如,您无法创建相同类型的新对象.

所以,仍然存在的biq问题是你的真正目标.在适当的OO设计中,您永远不需要知道可以从基类型派生的无限类型集.