Datentyp einer Klasse bekannt machen



  • Hallo,
    ich habe folgendes Problem:
    Ich möchte gerne einer speichernklasse alle objekte einer andere Klasse als pointer übergeben und zwar automatisch, wenn ein objekt erstellt wird.
    Also:

    Speichern speichern;
    Klasse1 *objekt = new Klasse1;
    Klasse1 *objekt2 = new Klasse1;
    

    Nun soll das speichern-objekt diese pointer erhalten und in einem array speichern und zwar in einem automatischen Ablauf. Leider kann man das nicht mit dem Konstruktor von Klasse1 machen, weil der Klasse1 die Speicherklasse nicht bekannt ist, und macht man es andersherum wüsste ich nicht wie man den Datentyp vorbestimmen soll, weil dann ja der speichernklasse Klasse1 nicht bekannt ist.

    Das zweite Problem, wenn ich mehrere objekte verschiedener Klassen in dem selben Array speichern will. Geht das überhaupt? weil das Array müsste dann ja mehrere Datentypen annehmen?

    ich hoffe ihr habt mich vertsanden ^^'

    mit freundlichen Grüßen,
    Sceen



  • Wenn die Klasse Speichern eh nur Zeiger von KlasseA und KlasseB annimmt, kannst du diese forward-deklarieren und in der Konstruktorsignatur von Speichern als Pointer übergben.



  • Klasse1 und alle anderen, welche speicherbar sein sollen von einer Basisklasse "Speicherbar" ableiten, dann kannst du in "Speichern" in einem std::vector Basisklassenzeiger ablegen.
    Ich würde dann in dem "Speicherbar"-Konstruktor das Objekt in die "Speichern"-Klasse ablegen.
    Realisier dazu am besten "Speichern" als Singleton, das sollte am einfachsten gehen. Es soll ja wahrscheinlich eh nur ein einziges "Speichern"-Objekt existieren.



  • Ja danke das forwarden hat geholfen.
    Das ist derbe prakitsch 😃



  • Sceen schrieb:

    Ja danke das forwarden hat geholfen.
    Das ist derbe prakitsch 😃

    Ist nicht nur praktisch, sondern manchmal die einzige Möglichkeit. Mach dir auch mal den genauen Grund klar.
    Ich denke, dass dir der Beitrag helfen wird das ganze zu verstehen.


Anmelden zum Antworten