¿¹Á¦
#include
<typeinfo>
class
Shape{
public
:
virtual
~Shape()=0;
};
class
Circle :
public
Shape{};
class
Square :
public
Shape{};
void
function(
const
Shape * s)
{
if
(
typeid
(*s)==
typeid
(Circle))
{
//do something for Circle
}
else if
(
typeid
(*s)==
typeid
(Square))
{
//do something for Square
}
}
¼Ö·ç¼Ç
°íÀ¯ ½Äº°ÀÚ¸¦ ¸®ÅÏÇÏ´Â virtual classOf() ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© Ŭ·¡½º¸¦ ±¸ÇöÇϰųª µ¿Àû ij½ºÆ®ÀÇ ¼º°øÀ» Å×½ºÆ®ÇϽʽÿÀ.
class
Shape{
public
:
virtual
~Shape()=0;
};
class
Circle :
public
Shape{};
class
Square :
public
Shape{};
void
function(
const
Shape * s)
{
Shape *sh =
const_cast
<Shape*> (s);
if
(
dynamic_cast
<Circle *>(sh)
)
{
//do something for Circle
}
else if
(
dynamic_cast
<Square *>(sh)
)
{
//do something for Square
}
}