Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano sposób dodawania następujących poziomów funkcjonalności do klasy pochodnej CObject:
Informacje o klasie czasu wykonywania
Obsługa tworzenia dynamicznego
Obsługa serializacji
Aby uzyskać ogólny opis CObject funkcji, zobacz artykuł Wyprowadzanie klasy z obiektu CObject.
Aby dodać informacje o klasie czasu wykonywania
Wyprowadź swoją klasę z
CObject, zgodnie z opisem w artykule Wyprowadzanie klasy z obiektu CObject.Użyj makra DECLARE_DYNAMIC w deklaracji klasy, jak pokazano poniżej:
class CPerson : public CObject { DECLARE_DYNAMIC(CPerson) // other declarations };Użyj makra IMPLEMENT_DYNAMIC w pliku implementacji (. CPP) klasy. To makro przyjmuje jako argumenty nazwę klasy i jej klasy bazowej w następujący sposób:
IMPLEMENT_DYNAMIC(CPerson, CObject)
Uwaga / Notatka
Zawsze umieszczaj IMPLEMENT_DYNAMIC w pliku implementacji (. CPP) dla klasy. Makro IMPLEMENT_DYNAMIC powinno być oceniane tylko raz podczas kompilacji i dlatego nie powinno być używane w pliku interfejsu (. H) które potencjalnie mogą być zawarte w więcej niż jednym pliku.
Aby dodać obsługę dynamicznego tworzenia
Derywuj swoją klasę od
CObject.Użyj makra DECLARE_DYNCREATE w deklaracji klasy.
Zdefiniuj konstruktor bez argumentów (konstruktor domyślny).
Użyj makra IMPLEMENT_DYNCREATE w pliku implementacji klasy.
Aby dodać obsługę serializacji
Derywuj swoją klasę od
CObject.Zastąp funkcję składową
Serialize.Uwaga / Notatka
Jeśli wywołasz
Serializebezpośrednio, oznacza to, że nie chcesz serializować obiektu za pomocą wskaźnika polimorficznego, pomijaj kroki od 3 do 5.Użyj makra DECLARE_SERIAL w deklaracji klasy.
Zdefiniuj konstruktor bez argumentów (konstruktor domyślny).
Użyj makra IMPLEMENT_SERIAL w pliku implementacji klasy.
Uwaga / Notatka
Wskaźnik polimorficzny wskazuje obiekt klasy (nazwa ją A) lub do obiektu dowolnej klasy pochodzącej z A (nazwijmy ją B). Aby serializować przez wskaźnik polimorficzny, struktura musi określić klasę czasu wykonywania obiektu, który serializuje (B), ponieważ może być obiektem dowolnej klasy pochodzącej z jakiejś klasy bazowej (A).
Aby uzyskać więcej informacji na temat włączania serializacji podczas dziedziczenia klasy z CObject, zobacz artykuły Pliki w MFC i Serializacja.