Partager via


spécifier des niveaux de fonctionnalité

Cet article explique comment ajouter des niveaux de fonctionnalité à votre CObject- classe dérivée :

  • informations de classe d'exécution

  • Prise en charge de la création dynamique

  • Prise en charge de sérialisation

Pour obtenir une description générale de la fonctionnalité de CObject, consultez l'article Dérivation d'une classe de CObject.

Pour ajouter des informations sur la classe d'exécution

  1. Dériver la classe à partir de CObject, comme décrit dans l'article Dérivation d'une classe 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 la classe. Cette macro prend comme arguments le nom de la classe et la classe de base, comme suit :

    IMPLEMENT_DYNAMIC( CPerson, CObject )
    

Notes

Mettez toujours IMPLEMENT_DYNAMIC dans le fichier d'implémentation (.CPP) pour la classe.La macro IMPLEMENT_DYNAMIC doit être évaluée une seule fois pendant la compilation et ne doit donc pas être utilisée dans un fichier (de l'interface. H) qui pourrait être inclus dans plusieurs fichiers.

Pour ajouter la prise en charge de création dynamique

  1. Dérivez vous classe à partir de CObject.

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

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

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

Pour ajouter la prise en charge de la sérialisation

  1. Dérivez votre classe à partir de CObject.

  2. Ecrasez la fonction membre Serialize.

    Notes

    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 avec aucun argument (un constructeur par défaut).

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

Notes

« Points d'un pointeur polymorphe » sur un objet d'une classe (appel il A) ou un objet d'une classe dérivée d'Un (dites, B).Pour sérialiser via un pointeur polymorphe, l'infrastructure doit déterminer la classe de l'objet qu'elle sérialise (b), ce peut être un objet de n'importe quelle classe dérivée d'une certaine classe de base (a).

Pour plus d'informations sur la manière de vérifier la sérialisation lorsque vous dérivez votre classe CObject, consultez les articles Fichiers de MFC et Sérialisation.

Voir aussi

Concepts

dérivation d'une classe de CObject