Plat für Objekt reservieren - Parameter übergeben



  • Hallo an alle 🙂

    ich habe ein kleines Problem:

    ich möchte in einer Klasse einen Rohling von einem Objekt einer anderen Klasse erstellen, also etwas in der Form:

    Klasse2 dasObjekt2;

    nun muss aber Klasse2 im Konstruktor ein Parameter übergeben werden (den ich zu diesem Zeitpunkt aber noch nicht kenne, daher die Definition als Rohling). Wenn ich das nur so schreibe bekomme ich den Fehler:

    'Klasse2:Klasse2()' is private

    aber wie gesagt, ich habe zu diesem Zeitpunkt das verlangte Objekt für den Konstruktor noch nicht... wie kann ich das lösen?

    Danke schon mal! 🙂



  • Ein Möglichkeit ist es später zu setzen:

    Klasse2 dasObjekt2;
    AndereKlasse dasAndereObjekt;
    dasObjekt2.setEinAnderesObjekt(dasAndereObjekt);
    


  • danke so weit schon mal.

    ich habe auf den Quellcode von Klasse2 aber leider keinen Zugriff. Das heißt ich kann die von dir erwähnte Methode leider nicht einbauen (und das Objekt auch nicht so deklarieren, weil der Stadartkonstruktor privat ist...)


  • Mod

    Da stimmt was nicht vom Design. Entweder muss es unbestimmte Klasse2-Objekte geben können oder es macht keinen Sinn, dass deine Klasse ein unbestimmtes Klasse2 Objekt enthalten kann. Denn dann wäre ein Teil deines Klassenobjekts in einem unbestimmten Zustand. Was würde dann beispielsweise passieren, wenn man eine Memberfunktion deiner Klasse benutzt? Ich vermute mal eher, dass das Klasse2-Objekt eher als Parameter für ein oder mehrere deiner Memberfunktionen ist oder dass dein Klasse-Objekt einen Verweis auf ein Klasse2-Objekt enthalten soll.



  • Kannst du nicht das Klasse2 objekt erst erstellen wenn du den Parameter kennst? Weil du kannst es ja sowieso nicht benutzen wenn du den Parameter noch nicht angegeben hast ...



  • also die Sache ist ja, dass ich praktisch meinem Hauptprogramm beim Start Parameter übergebe und ich diese paramter eigentlich in den Konstruktor der Klasse2 schreiben muss, so was in der Art:

    Hauptprogramm:

    Klasse1 dasObjekt1(derParameter);

    und Klasse1 soll nun wieder ein Objekt2 haben das man per:

    Klasse2 dasObjekt2(derParameter);

    erstellen würde. Aber um das Objekt hier erst zu erstellen (und es auch außerhalb der dafür verwendeten Methode verwenden zu können) muss ich ja im Header zumindest schon mal den Platz reserviert haben...



  • Das heißt du möchtest das "dasObjekt2" global ist?



  • genau



  • ich glaub ich habs:

    ich habe den Speicherplatz jetzt als pointer reserviert, dann ist er auch mit:

    Klasse2 dasObjekt2;

    einverstanden... danke an alle!



  • nur der Vollständikeit, damit sich keiner über den namen wundert^^ eigentlich nehm ich Pete als Namen, wenn der schon besetzt ist Theo123 -> sind beides meine wenn ich grad auf die schnelle nen anderen Namen brauche toggle ich da manchmal zwischen 😉


Anmelden zum Antworten