Udostępnij za pośrednictwem


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

  1. Utwórz klasę z klasy , zgodnie z CObjectopisem w artykule Wyprowadzanie klasy z obiektu CObject .

  2. Użyj makra DECLARE_DYNAMIC w deklaracji klasy, jak pokazano poniżej:

    class CPerson : public CObject
    {
       DECLARE_DYNAMIC(CPerson)
    
       // other declarations
    };
    
  3. 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

  1. Utwórz klasę na podstawie CObjectklasy .

  2. Użyj makra DECLARE_DYNCREATE w deklaracji klasy.

  3. Zdefiniuj konstruktor bez argumentów (konstruktor domyślny).

  4. Użyj makra IMPLEMENT_DYNCREATE w pliku implementacji klasy.

Aby dodać obsługę serializacji

  1. Utwórz klasę na podstawie CObjectklasy .

  2. 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.

  3. Użyj makra DECLARE_SERIAL w deklaracji klasy.

  4. Zdefiniuj konstruktor bez argumentów (konstruktor domyślny).

  5. 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 CObjectklasy , zobacz artykuły Pliki w MFC i Serializacja.

Zobacz też

Wyprowadzanie klasy z obiektu CObject