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
Dérivez votre classe
CObject
, comme décrit dans l’article Dérivation d’une classe à partir de CObject .Utilisez la macro DECLARE_DYNAMIC dans votre déclaration de classe, comme indiqué ici :
class CPerson : public CObject { DECLARE_DYNAMIC(CPerson) // other declarations };
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
Dérivez votre classe de
CObject
.Utilisez la macro DECLARE_DYNCREATE dans la déclaration de classe.
Définissez un constructeur sans argument (constructeur par défaut).
Utilisez la macro IMPLEMENT_DYNCREATE dans le fichier d’implémentation de classe.
Pour ajouter la prise en charge de la sérialisation
Dérivez votre classe de
CObject
.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.Utilisez la macro DECLARE_SERIAL dans la déclaration de classe.
Définissez un constructeur sans argument (constructeur par défaut).
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.