지금내가 투디겜을 만들고있는데말야


'물체' 라는 클래스가 있어


게임에 등장하는 플레이어,몬스터,지형 등등이 전부 이 물체라는 클래스를 상속받아서 이루어져있음


그런데 여기 '총알' 이라는 클래스가 있는데


이 총알이 모든 물체에관해서 충돌체크를해서 닿은녀석에게 데미지를주고 멀리 날아가게 만드려고해 (*단 지형은 데미지만 입고 안날아감*)


그래서 생각한방법이 두개가있는데 첫번째는


클래스 물체{

사적:

int 종족 ;    // 플레이어 : 1, 몬스터 : 2, 지형  : 3 , ...


공적:

int 너누구() { return 종족; }

 

};


이런식으로 물체클래스에 종족구별 플레그를 하나줘서


물체* 충돌체크함수(...)

{

충돌검사한다 ...

return 충돌한 물체;

}

↑ 이런 함수가 있다치면


물체* obj = 충돌체크함수(총알);


if( obj->너누구() == 몬스터 || obj->너누구() == 플레이어)

체력닳게하고 날려버린다


else if( obj->너누구() == 지형 )

체력만 닳게한다



이런식으로 플레그로 구분한다음에 처리를 하는 방법이고



두번째방법은 플레그같은거 없이 그냥 물체를 상속받은 애들이니까 


물체* obj = 충돌체크함수(총알);


if( dynamic_cast<플레이어*>(obj)  != NULL  || dynamic_cast<몬스터*>(obj)  != NULL )

 데미지주고 날려버린다

else if ( dynamic_cast<지형*>(obj)  != NULL  )

데미지만준다



이렇게 dynamic_cast로 누구인지 알아내서 처리하는방법이랑 두가지를 생각했는데

어떤방법이 더 나을까??



한줄요약 : c++에서 부모포인터로 가르키고있는 값이 어떤 자식놈인지 구별할때 dynamic_cast랑 플레그하나 두는거랑 뭐가 더 나음?