다음을 통해 공유


기능 수준 지정

이 문서에서는 CObject 파생 클래스에 다음 수준의 기능을 추가하는 방법을 설명합니다.

  • 런타임 클래스 정보

  • 동적 만들기 지원

  • Serialization 지원 기능

기능에 대한 CObject 일반적인 설명은 CObject에서 클래스 파생 문서를 참조하세요.

런타임 클래스 정보를 추가하려면

  1. CObject에서 클래스를 파생하고, CObject로부터 클래스 파생 문서에 설명된 대로 진행하십시오.

  2. 다음과 같이 클래스 선언에서 DECLARE_DYNAMIC 매크로를 사용합니다.

    class CPerson : public CObject
    {
       DECLARE_DYNAMIC(CPerson)
    
       // other declarations
    };
    
  3. 클래스의 구현 파일(.CPP)에서 IMPLEMENT_DYNAMIC 매크로를 사용하세요. 이 매크로는 다음과 같이 클래스 이름과 기본 클래스의 이름을 인수로 사용합니다.

    IMPLEMENT_DYNAMIC(CPerson, CObject)
    

비고

항상 클래스의 구현 파일(.CPP)에 IMPLEMENT_DYNAMIC을 배치하십시오. IMPLEMENT_DYNAMIC 매크로는 컴파일 중에 한 번만 평가되어야 하므로 여러 파일에 포함될 수 있는 인터페이스 파일 (.H)에서는 사용하면 안 됩니다.

동적 만들기 지원을 추가하려면

  1. CObject 클래스에서 파생합니다.

  2. 클래스 선언에서 DECLARE_DYNCREATE 매크로를 사용합니다.

  3. 인수가 없는 생성자(기본 생성자)를 정의합니다.

  4. 클래스 구현 파일에서 IMPLEMENT_DYNCREATE 매크로를 사용합니다.

serialization 지원을 추가하려면

  1. CObject 클래스에서 파생합니다.

  2. Serialize 멤버 함수를 재정의합니다.

    비고

    Serialize를 직접 호출하는 경우, 즉 다형 포인터를 통해 개체를 직렬화하지 않는다면, 3단계부터 5단계까지 생략합니다.

  3. 클래스 선언에서 DECLARE_SERIAL 매크로를 사용합니다.

  4. 인수가 없는 생성자(기본 생성자)를 정의합니다.

  5. 클래스 구현 파일에서 IMPLEMENT_SERIAL 매크로를 사용합니다.

비고

"다형 포인터"는 클래스의 개체(A라고 함) 또는 A(예: B)에서 파생된 클래스의 개체를 가리킵니다. 다형 포인터를 통해 직렬화하려면 프레임워크가 직렬화 중인 개체의 런타임 클래스(B)를 결정해야 합니다. 이는 일부 기본 클래스(A)에서 파생된 클래스의 개체일 수 있기 때문에 프레임워크에서 결정해야 합니다.

클래스 CObject를 파생시킬 때 serialization을 사용하도록 설정하는 방법에 대한 자세한 내용은 MFC의 파일Serialization 문서를 참조하세요.

참고하십시오

CObject에서 클래스 파생