Especificar niveles de funcionalidad
En este artículo se describe cómo agregar los siguientes niveles de funcionalidad a la 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
Derive la clase de CObject, como se describe en el artículo de Derivar de una clase de CObject .
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 };
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) de 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
Derive la clase de CObject.
Utilice la macro de DECLARE_DYNCREATE en la declaración de clase.
Defina un constructor sin argumentos (un constructor predeterminado).
Utilice la macro de IMPLEMENT_DYNCREATE en el archivo de implementación de la clase.
Para agregar compatibilidad de serialización
Derive la clase de CObject.
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.
Utilice la macro de DECLARE_SERIAL en la declaración de clase.
Defina un constructor sin argumentos (un constructor predeterminado).
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 al derivar la clase de CObject, vea los artículos archivos en MFC y serialización.