Announcement

Collapse
No announcement yet.

Template + Pointer = MULTIPOINTER ??

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Template + Pointer = MULTIPOINTER ??

    Hi und guten Abend,

    erst mal eine Erläuterung um was es geht! Dann die Frage

    Also ich möchte eine Klasse schreiben die Fähig ist Pointer von verschiedenen Klassen zu verwalten und zwar am besten in einem Array mit MAX_EINTRAEGE (#define)!

    Nun das Problem die Pointer sind von mindestens 40-50 verschiedenen Klassen und was weiß ich wieviele Instanzen da verwaltet werden müssen! (Daher sollte die Klasse nicht speziell zu geschnitten sondern sehr allgemein gehalten sein!)

    Dazu kommt das die Klasse die Pointer so zurück geben soll wie sie sie bekommen hat! Nun Kann mir einer da weiter helfen ich denkemal das es am besten mit Template Methoden funktioniert oder kann mir jemand anderes vielleicht einen anderen Denkanstoss bzw. Code posten ??

    Danke

    Evil2002

  • #2
    Ich habe mich gefragt ob es nicht vielleicht möglich ist eine Klasse zu schreiben (keine Template-Klasse) sondern eine die nur Template-Methoden besitzt!
    Ich meine eine Klasse die so ähnlich aufgebaut ist wie diese hier:

    class BSP
    {
    T* PTR;
    public:
    template<class T>
    BSP(T* TPTR):PTR(TPTR){}
    virtual ~BSP(){}
    template<class T>
    T* _getPtr(void){return PTR;}
    };

    Wer kann mir vielleicht da weiter helfen?

    Comment


    • #3
      So nun noch eine kleine Beschreibung was das am Schluß werden soll:

      Ich will 2 Klassen schreiben eine die den Namen TGService Trägt und eine die den Namen TGRegistry trägt!

      So, diese 2 Klassen sollen folgendes können:

      - Instanzen der für ein Spiel...(das ist eigentlich neben Sache und die
      Beschreibung wird dann nur zu lang!)
      ...benötigten Klassen verwalten, das heißt die Pointer abspeichern am besten
      in in einem Array !

      - Diese Pointer sollen Abrufbar sein mit folgenden Parametern:
      - InstanzSignatur(char *) [soll eine Bezeichnung für die Instanz sein]
      Man könnte auch anstatt InstanzSignatur ServiceName Sagen aberich
      finde ersteres ist als Bezeichnung zutreffender
      - Klassenversion (char *) [soll verhindern das eine falsche Version für
      den Verwendungszweck zurückgeben wird]
      Der Pointer soll genau so wie er rein gekommen ist dann auch wieder
      zurückgegeben werden!

      - Der Service wird per TGRegistry registriert: das heißt alle Daten der Klasse
      selbst werden in TGService gespeichert, der Speicherort und die
      InstanzSignatur werden aber in TGRegistry abgelegt!

      Das ist das GROBE Konzept meines vorhabens, ich hoffe das ihr das versteht denn meine Grammatik ist echt das letzte!

      Mein Problem besteht nun darin das ich ein Array brauche das meine Pointer egal welchen Typs annimmt und es auch genauso wieder zurück gibt, wie rein gekommen ist!

      Und da bieten sich nun Templates nun mal ambesten an! Oder?

      Ich hoffe ihr versteht nun was ich da machen will!?

      Vielleicht kann mir nun jemand helfen?!?!?

      C U

      Evilissim

      Comment


      • #4
        Hi!<br>
        Mir ist nicht recht klar, was genau du haben/machen willst.
        Wenn du ein Array von Pointern willst, dann nimm <tt>std::vector&lt;void*&gt;</tt>.
        Günstig wäre es, wenn die <i>40-50 verschiedenen Klassen</i> eine gemeinsame Basisklasse hätten; dann könntest du nämlich sogar<tt>std::vector&lt;Basisklasse*&gt;</tt> verwenden.
        <br>Sollte ich dich komplett missverstanden haben, so gib bescheid. :-)
        <p>Ciao, Uli

        Comment


        • #5
          Ups, da hab ich mein Posting losgeschickt, bevor ich deines mit der genaueren Erläuterung gesehen habe. Obwohl: viel klarer ist mir dein Vorhaben auch mit dieser Erläuterung noch nicht. <br>Sollen die Zeiger auf irgendwelche Objekte deines Spiels zeigen (Spieler, Kartenfelder, ...?) oder auf irgendwelche Metadaten -- "Service", "alle Daten der Klasse selbst", "InstanzSignatur" klingt irgendwie nach zweiterem.
          <br>Uli

          Comment


          • #6
            Ich versuche es einfach noch einmal:

            Also die Klasse TGService soll die <B>Zeiger</B> auf die Klassen verwalten und am besten innerhalb der Klasse in einem Array !

            TGRegistry hingegen speichert nur die Informationen die (zum abrufen) wichtig sind z.B. die Signatur der Instanz (InstanzSignatur), KlassenVersion;

            Ich will nun versuchen eine Klasse (nicht die zwei erwähnten) zu schreiben, die die Fähigkeit besitzt die Pointer in einer Variable zu speichern egal was für ein Typ! <B>ABER</B> Diese Klasse darf keine Template Klasse sein sondern nur Template-Methoden haben! Denn damit ist gewährleistet, das ich von dieser Klasse ein Array bilden kann das mir die Arbeit erleichtert ! Denn ich kann doch nicht 40-50 Klassen von einer Basisklasse ableiten und dann sie hin und her casten (ok natürlich ginge das , aber wäre viel zu ineffektiv!!! Ich könnte diese Klasse dann auch für andere Projekte nutzen ohne sie umschreiben zu müssen!!!!))

            OK ICH HOFFE DAS MAN DAS JETZT KAPIEREN KANN!

            Danke schon einmal im vorraus für Euer bemühen mir zu helfen!

            Evil200

            Comment


            • #7
              BRÜLL KREISCH!!!

              Der Sender einer Nachricht ist dafür verantwortlich ob und wie sie beim Empfänger ankommt.

              Du darft dich nicht wundern, dass keiner dich versteht, schließlich steckt keiner in deiner Aufgabe drin und Hellsehr ist hier wohl keiner.

              Irgendwie kann ich mich des Eindrucks nicht verschließen, dass du konzeptionelle Probleme hast
              Christian

              Comment


              • #8
                Danke werde ich mir hinter die Ohren schreiben ;

                Comment

                Working...
                X