Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje, jak přidat následující úrovně funkčnosti do třídy odvozené od objektu CObject:
Informace o třídě za běhu programu
Podpora dynamického vytváření
Podpora serializace
Obecný popis CObject funkcí naleznete v článku Odvození třídy z objektu CObject.
Přidejte informace o třídě za běhu
Odvození třídy z
CObject, jak je popsáno v odvození třídy z CObject článku.Použijte makro DECLARE_DYNAMIC v deklaraci třídy, jak je znázorněno zde:
class CPerson : public CObject { DECLARE_DYNAMIC(CPerson) // other declarations };Použijte makro IMPLEMENT_DYNAMIC v souboru implementace (. CPP) vašeho předmětu. Toto makro přebírá jako argumenty název třídy a její základní třídu následujícím způsobem:
IMPLEMENT_DYNAMIC(CPerson, CObject)
Poznámka:
Vždy vložte IMPLEMENT_DYNAMIC do souboru implementace (. CPP) pro vaši třídu. Makro IMPLEMENT_DYNAMIC by se mělo vyhodnotit pouze jednou během kompilace, a proto by se nemělo používat v souboru rozhraní (. H), které by mohly být zahrnuty do více než jednoho souboru.
Přidání podpory dynamického vytváření
Odvoďte svou třídu z
CObject.Použijte makro DECLARE_DYNCREATE v deklaraci třídy.
Definujte konstruktor bez argumentů (výchozí konstruktor).
Použijte makro IMPLEMENT_DYNCREATE v souboru implementace třídy.
Přidání podpory serializace
Odvoďte svou třídu z
CObject.Přepište členskou
Serializefunkci.Poznámka:
Pokud voláte
Serializepřímo, to znamená, že nechcete serializovat objekt prostřednictvím polymorfního ukazatele, vynechte kroky 3 až 5.Použijte makro DECLARE_SERIAL v deklaraci třídy.
Definujte konstruktor bez argumentů (výchozí konstruktor).
Použijte makro IMPLEMENT_SERIAL v souboru implementace třídy.
Poznámka:
"Polymorfní ukazatel" odkazuje na objekt třídy (nazývá ho A) nebo na objekt jakékoli třídy odvozené od A (řekněme B). Aby bylo možné serializovat prostřednictvím polymorfního ukazatele, musí architektura určit třídu runtime objektu, který serializuje (B), protože může být objektem jakékoli třídy odvozené z některé základní třídy (A).
Další podrobnosti o tom, jak povolit serializaci při odvození třídy z CObject, naleznete v článcích Soubory v MFC a Serializace.