Mega Code Archive

 
Categories / C++ Tutorial / Pointer
 

Use dynamic_cast to replace typeid

#include <iostream> #include <typeinfo> using namespace std; class Base { public:   virtual void f() {} }; class Derived : public Base { public:   void derivedOnly() {     cout << "Is a Derived Object.\n";   } }; int main() {   Base *bp, b_ob;   Derived *dp, d_ob;   // use typeid   bp = &b_ob;   if(typeid(*bp) == typeid(Derived)) {     dp = (Derived *) bp;     dp->derivedOnly();   }   else     cout << "Cast from Base to Derived failed.\n";   return 0; } Cast from Base to Derived failed.