Especificar los niveles de funcionalidad

En este artículo se describe cómo agregar los siguientes niveles de funcionalidad a la clase derivada de CObject:

  • Información de clase en tiempo de ejecución

  • Compatibilidad con creación dinámica

  • Compatibilidad con la serialización

Para obtener una descripción general de la funcionalidad CObject, consulte el artículo Derivar una clase de CObject.

Para añadir información de clases en tiempo de ejecución

  1. Derive la clase de CObject, como se describe en el artículo Derivar una clase de CObject .

  2. Use la macro DECLARE_DYNAMIC en la declaración de clase, como se muestra aquí:

    class CPerson : public CObject
    {
       DECLARE_DYNAMIC(CPerson)
    
       // other declarations
    };
    
  3. Use la macro IMPLEMENT_DYNAMIC en el archivo de implementación (. CPP) de tu clase. Esta macro toma como argumentos el nombre de la clase y su clase base, como se indica a continuación:

    IMPLEMENT_DYNAMIC(CPerson, CObject)
    

Nota:

Coloque siempre IMPLEMENT_DYNAMIC en el archivo de implementación (. CPP) para su clase. La macro IMPLEMENT_DYNAMIC solo se debe evaluar una vez durante una compilación y, por lo tanto, no debe usarse en un archivo de interfaz (. H) que podrían incluirse en más de un archivo.

Para añadir compatibilidad con creación dinámica

  1. Derive la clase de CObject.

  2. Use la macro DECLARE_DYNCREATE en la declaración de clase.

  3. Defina un constructor sin argumentos (un constructor predeterminado).

  4. Use la macro IMPLEMENT_DYNCREATE en el archivo de implementación de clase.

Para añadir compatibilidad con la serialización

  1. Derive la clase de CObject.

  2. Invalidar la función miembro Serialize.

    Nota:

    Si llama Serialize directamente a , es decir, no desea serializar el objeto a través de un puntero polimórfico, omita los pasos 3 a 5.

  3. Use la macro DECLARE_SERIAL en la declaración de clase.

  4. Defina un constructor sin argumentos (un constructor predeterminado).

  5. Use la macro IMPLEMENT_SERIAL en el archivo de implementación de clase.

Nota:

Un "puntero polimórfico" apunta a un objeto de una clase (llámalo A) o a un objeto de cualquier clase derivada de A (por ejemplo, B). Para serializar a través de un puntero polimórfico, el marco debe determinar la clase en tiempo de ejecución del objeto que está serializando (B), ya que podría ser un objeto de cualquier clase derivada de alguna clase base (A).

Para obtener más información sobre cómo habilitar la serialización al derivar la clase de CObject, consulte los artículos Archivos en MFC y Serialización.

Consulte también

Derivación de una clase de CObject