Určení úrovní funkčnosti
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
Podpora dynamického vytváření
Podpora serializace
Obecný popis CObject
funkcí naleznete v článku Odvození třídy z objektu CObject.
Přidání informací 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í
Odvodit 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
Odvodit třídu z
CObject
.Přepište členovu
Serialize
funkci.Poznámka
Pokud voláte
Serialize
přímo, to znamená, že nechcete serializovat objekt prostřednictvím polymorfní ukazatel, vynecháte 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.