Objekt-Id



  • Morgen zusammen!

    Folgendes Problemchen:
    (@Volkard: ich werd mich jetzt auch bemühen sprechende Nahmen zu verwenden! 😉 )

    Angenommen ich hätte folgende Klassen zur Verfügung:

    +-----------------+
                       | PaintableObject |
                       +-----------------+
                                ^
                                |
             +------------------+-----------------+------- . . .
             |                  |                 |
         +--------+         +--------+        +-------+
         | Border |         | Button |        | Panel |
         +--------+         +--------+        +-------+  
    
         und diverse EventKlassen:
    
               +-----------+
               |   Event   |
               +-----------+
                     ^
                     | 
               +-----------+
               | MouseMove |
               +-----------+ 
    
    (soll natürlich nur ein einfaches Beispiel sein)
    

    Jetzt hab ich die Möglichkeit in MouseMove Einträge zur Ereignisbehandlung festzusetzen. D.h.: es existieren in MouseMove n EventEntries, von denen jeder über einen Pointer auf ein PaintableObject und einen Verweis auf die zu verwendende Routine verfügt.
    Diese EventObjekte mit ihren Entries möchte ich nun gerne in einer Datei ablegen. Es macht jetzt natürlich keinen Sinn, den in jedem Entry abgelegten Pointer auf das betroffene PaintableObject zu speichern. Stattdessen soll eine eindeutige Kennung für des jeweilige PaintableObject abgelegt werden, über die nach dem Auslesen aus der Datei die Adresse des gewünschten PaintableObjects ermittelt werden kann. Dann könnte ich wieder wie zuvor per Pointer mit dem entsprechenden PaintableObject arbeiten.
    So eine Kennung könnte folgendermaßen aussehen:
    Teil1: Klassentyp
    Teil2: Index des Objekts

    Ich könnte also aus der Datei auslesen, dass z.B. ein Objekt vom Typ Border referenziert werden soll(Teil1). Über Teil2 wüsste ich welchen Index der betroffene Border unter allen Bordern besitz(z.B. bei 28 Bordern, Border mit Index 12). Somit könnte ich den Border wiederfinden und dessen Adresse ermitteln.

    Jetzt ist natürlich die Arbeit mit Klassentypen nicht gerne gesehen!
    Gibt es irgendeine andere Möglichkeit, Objekte so zu kennzeichnen, dass ich sie
    in einem umfangreichen System trotzdem eindeutig beschreiben kann?

    Danke!

    Grüße,
    TS++

    [ Dieser Beitrag wurde am 14.05.2003 um 08:59 Uhr von TS++ editiert. ]



  • zum klassentyp gibts typeid, für den index könnteste ja ne variable mitschleifen



  • Wenn Du speichern willst, ist das mit den Klassentypen schon ok. Nicht gern gesehen ist es nur als Ersatz für Polymorphie.



  • Danke für eure Hilfe! 🙂

    Grüße,
    TS++


Anmelden zum Antworten