Compartir a través de


Especificar los niveles de funcionalidad

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

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

  • Compatibilidad dinámica de creación

  • Compatibilidad de serialización

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

Para agregar la información de la clase en tiempo de ejecución

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

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

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

    IMPLEMENT_DYNAMIC( CPerson, CObject )
    

Nota

Coloque siempre IMPLEMENT_DYNAMIC en el archivo de implementación (.CPP) para la clase.La macro de IMPLEMENT_DYNAMIC se debe evaluar solo una vez durante una compilación y por consiguiente no se debe utilizar en un archivo de interfaz (. H) que se podría incluir en más de un archivo.

Para agregar compatibilidad dinámica de creación

  1. Derive la clase de CObject.

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

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

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

Para agregar compatibilidad de serialización

  1. Derive la clase de CObject.

  2. Reemplace la función miembro de Serialize .

    Nota

    Si llama a Serialize directamente, es decir, no desea serializar el objeto mediante un puntero polimórfico, omite los pasos 3 a 5.

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

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

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

Nota

Puntos de un “puntero polimórfico” a un objeto de una clase (llamada A) o un objeto de cualquier clase derivada de (indica, B).Para serializar mediante un puntero polimórfico, el marco debe determinar la clase en tiempo de ejecución del objeto que está serializando (b), ya que puede 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 cuando derive la clase de CObject, vea los artículos Archivos en MFC y Serialización.

Vea también

Conceptos

Derivar una clase de CObject