Określanie poziomów funkcjonalności
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
Utwórz klasę z klasy , zgodnie z
CObject
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
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ę tworzenia dynamicznego
Utwórz klasę na podstawie
CObject
klasy .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
Utwórz klasę na podstawie
CObject
klasy .Zastąpić funkcję składową
Serialize
.Uwaga
Jeśli wywołasz
Serialize
bezpoś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
Wskaźnik polimorficzny wskazuje obiekt klasy (wywołaj ją A) lub do obiektu dowolnej klasy pochodzącej z klasy A (powiedzmy 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 tworzenia klasy z CObject
klasy , zobacz artykuły Pliki w MFC i Serializacja.