개발지식창고/MFC
RTTI 사용을 위한 CRuntimeClass와 매크로들
모과이IT
2010. 7. 30. 11:05
■ RTTI (Run-Time Type Information)
- C++에서는 RTTI를 완벽하게 지원하지 않는다. 때문에 MS는 Compiler 차원에서 RTTI를 지원해 주기 위한 방법을 구현해낸 것이 CRuntimeClass와 여러가지 매크로 함수를 제공하고 있다.
■ CRuntimeClass
- 본질적으로 특정 클래스에 대한 정보를 담고 있는 구조체이다.
- 일반화된 객체 생성 : 클래스 이름을 사용하지 않고 객체를 생성하는 기능
기반 클래스를 가지고 있지 않다.
- 세 종류의 매크로를 제공한다.
DECLARE_DYNCREATE()
IMPLEMENT_DYNCREATE()
RUNTIME_CLASS()
■ IMPLEMENT_DYNCREATE(CSimpleCalc, CCmdTarget)
- 첫번째 변수는 동적으로 생성하고자 하는 객체 클래스 이름
- 두번째 변수는 그 클래스가 상속 받는 기반 클래스의 이름
ex) 메인 프레임의 경우, 기반 클래스가 CFrameWnd 이면 단일 도큐먼트(SDI), CMDIFrameWnd 이면 다중 도큐먼트(MDI) 형식이다.
■ RUNTIME_CLASS 매크로
- class 정보를 구하는 매크로
- 주로 현재 사용하는 클래스가 유효한 클래스인지 판단