MFC 클래스 개체의 형식 캐스팅
형식 캐스팅 매크로는 지정된 포인터를 특정 클래스의 개체를 가리키는 포인터로 캐스팅하는 방법을 제공하며, 캐스트가 유효한지 확인하거나 확인하지 않습니다.
다음 표에서는 MFC 형식 캐스팅 매크로를 나열합니다.
MFC 클래스 개체에 포인터를 캐스팅하는 매크로
속성 | 설명 |
---|---|
DYNAMIC_DOWNCAST | 캐스트가 합법적인지 확인하는 동안 클래스 개체에 대한 포인터로 포인터를 캐스팅합니다. |
STATIC_DOWNCAST | 한 클래스의 개체에 대한 포인터를 관련 형식의 포인터로 캐스팅합니다. 디버그 빌드에서 개체가 대상 형식의 "종류"가 아닌 경우 ASSERT를 발생합니다. |
DYNAMIC_DOWNCAST
캐스트가 합법적인지 확인하는 동안 클래스 개체에 대한 포인터로 포인터를 캐스팅하는 편리한 방법을 제공합니다.
DYNAMIC_DOWNCAST(class, pointer)
매개 변수
class
클래스의 이름입니다.
pointer
형식 클래스의 개체에 대한 포인터로 캐스팅할 포인터입니다.
설명
매크로는 포인터 매개 변수를 클래스 매개 변수 형식의 개체에 대한 포인터로 캐스팅합니다.
포인터에서 참조하는 개체가 식별된 클래스의 "종류"인 경우 매크로는 적절한 포인터를 반환합니다. 유효한 캐스트가 아닌 경우 매크로는 NULL을 반환합니다.
STATIC_DOWNCAST
pobject를 class_name 개체에 대한 포인터로 캐스팅합니다.
STATIC_DOWNCAST(class_name, pobject)
매개 변수
class_name
캐스팅할 클래스의 이름입니다.
pobject
class_name 개체에 대한 포인터로 캐스팅할 포인터입니다.
설명
pobject는 NULL이거나 class_name 직접 또는 간접적으로 파생된 클래스의 개체를 가리킵니다. _DEBUG 전처리기 기호가 정의된 애플리케이션 빌드에서 매크로는 pobject가 NULL이 아니거나 class_name 매개 변수에 지정된 클래스가 아닌 개체를 가리키는 경우 ASSERT(CObject::IsKindOf 참조)입니다. 비 _DEBUG 빌드에서 매크로는 형식 검사 없이 캐스트를 수행합니다.
class_name 매개 변수에 지정된 클래스는 파생되어야 하며 CObject 클래스: CObject에서 CObject
클래스 파생에 설명된 대로 DECLARE_DYNAMIC 및 IMPLEMENT_DYNAMIC, DECLARE_DYNCREATE 및 IMPLEMENT_DYNCREATE 또는 DECLARE_SERIAL 및 IMPLEMENT_SERIAL 매크로를 사용해야 합니다.
예를 들어 다음 식을 사용하는 포인터로 CMyDoc
포인터 pMyDoc
를 캐스팅할 CDocument
수 있습니다.
CDocument* pDoc = STATIC_DOWNCAST(CDocument, pMyDoc);
직접 또는 간접적으로 CDocument
파생된 개체를 가리키지 않으면 pMyDoc
매크로는 ASSERT가 됩니다.