Project Settings(Alt + F7)에서 C/C++ 탭에서 Category → C++ Language를 누르고 Enable Run-Time Type Information(RTTI)를 체크하자.
그런 다음 dynamic cast를 사용하면 된다.
----------------------------------------------------------------------------------------
#include <iostream>
using namespace std;
enum TYPE {HORSE, PEGASUSE};
class Horse
{
private :
int itsAge;
public :
virtual void Gallop() {cout << "Galloping..." << endl;}
};
class Pegasus : public Horse
{
public :
virtual void Fly() {cout << "Fly! Fly!" << endl;}
};
const int NumberHorses = 5;
int main()
{
Horse * Ranch[NumberHorses];
Horse * pHorse;
int choice;
for(int i = 0; i < NumberHorses; i++)
{
cout << "(1)Horse (2)Pegasus : ";
cin >> choice;
if(choice == 2)
pHorse = new Pegasus;
else
pHorse = new Horse;
Ranch[i] = pHorse;
}
cout << endl;
for(i = 0; i < NumberHorses; i++)
{
Pegasus * pPeg = dynamic_cast<Pegasus *> (Ranch[i]);
/*
컴파일 하는 동안에 Ranch[i]가 가르키는 객체가 Pegasus라면 pPeg가 Ranch[i]가 될 것이고 그렇지 않으면 pPeg가 NULL이 될 것이다.
*/
if(pPeg)
pPeg->Fly();
else
cout << "Just a horse" << endl;
delete Ranch[i];
}
}