Partager via


Spécification de niveaux de fonctionnalité

Cet article explique comment ajouter les niveaux de fonctionnalités suivants à votre classe dérivée de CObject :

  • Informations sur la classe d’exécution

  • Prise en charge de la création dynamique

  • Prise en charge de la sérialisation

Pour obtenir une description générale des CObject fonctionnalités, consultez l’article Dérivant une classe à partir de CObject.

Pour ajouter des informations de classe d’exécution

  1. Dérivez votre classe CObject, comme décrit dans l’article Dérivation d’une classe à partir de CObject .

  2. Utilisez la macro DECLARE_DYNAMIC dans votre déclaration de classe, comme indiqué ici :

    class CPerson : public CObject
    {
       DECLARE_DYNAMIC(CPerson)
    
       // other declarations
    };
    
  3. Utilisez la macro IMPLEMENT_DYNAMIC dans le fichier d’implémentation (. CPP) de votre classe. Cette macro prend comme arguments le nom de la classe et sa classe de base, comme suit :

    IMPLEMENT_DYNAMIC(CPerson, CObject)
    

Remarque

Placez toujours IMPLEMENT_DYNAMIC dans le fichier d’implémentation (. CPP) pour votre classe. La macro IMPLEMENT_DYNAMIC ne doit être évaluée qu’une seule fois pendant une compilation et ne doit donc pas être utilisée dans un fichier d’interface (. H) pouvant être inclus dans plusieurs fichiers.

Pour ajouter la prise en charge de la création dynamique

  1. Dérivez votre classe de CObject.

  2. Utilisez la macro DECLARE_DYNCREATE dans la déclaration de classe.

  3. Définissez un constructeur sans argument (constructeur par défaut).

  4. Utilisez la macro IMPLEMENT_DYNCREATE dans le fichier d’implémentation de classe.

Pour ajouter la prise en charge de la sérialisation

  1. Dérivez votre classe de CObject.

  2. Remplacez la Serialize fonction membre.

    Remarque

    Si vous appelez Serialize directement, c’est-à-dire que vous ne souhaitez pas sérialiser l’objet via un pointeur polymorphe, omettez les étapes 3 à 5.

  3. Utilisez la macro DECLARE_SERIAL dans la déclaration de classe.

  4. Définissez un constructeur sans argument (constructeur par défaut).

  5. Utilisez la macro IMPLEMENT_SERIAL dans le fichier d’implémentation de classe.

Remarque

Un « pointeur polymorphe » pointe vers un objet d’une classe (appelez-le A) ou à un objet de n’importe quelle classe dérivée d’A (par exemple, B). Pour sérialiser par le biais d’un pointeur polymorphe, l’infrastructure doit déterminer la classe d’exécution de l’objet qu’il sérialise (B), car il peut s’agir d’un objet d’une classe dérivée d’une classe de base (A).

Pour plus d’informations sur l’activation de la sérialisation lorsque vous dérivez votre classe CObject, consultez les articles Fichiers dans MFC et Sérialisation.

Voir aussi

Dérivation d’une classe de CObject