Use a reference with typeid : typeid « Development « C++ Tutorial






#include <iostream>
#include <typeinfo>
using namespace std;

class Base {
public:
  virtual bool lays_eggs() { return false; } // Base is polymorphic

};

class Derived1: public Base {
public:

};

class Derived2: public Base {
public:
  bool lays_eggs() { return true; }

};

void WhatBase(Base &ob)
{
  cout << "ob is referencing an object of type ";
  cout << typeid(ob).name() << endl;
}

int main()
{
  Base AnyBase;
  Derived1 Derived1;
  Derived2 Derived2;

  WhatBase(AnyBase);
  WhatBase(Derived1);
  WhatBase(Derived2);

  return 0;
}
ob is referencing an object of type 4Base
ob is referencing an object of type 8Derived1
ob is referencing an object of type 8Derived2








5.24.typeid
5.24.1.Use typeid
5.24.2.Use typeid on a polymorphic class heirarchy
5.24.3.Compare the typeid for templates
5.24.4.Use a reference with typeid
5.24.5.Demonstrating run-time type id
5.24.6.Using typeid with templates
5.24.7.Using typeid: class pointer, base class, derived class,
5.24.8.typeid() function and RTTI must be enabled in compiler
5.24.9.Output the name of a typeid
5.24.10.print type name of what ptr points at
5.24.11.Using typeid: enum data type