Konstruktor als Parameter übergeben unsicher?



  • Hallo,

    ich habe ein Problem in meinem Code gefunden, bei dem ich ein Konstruktor als Parameter der vector Funktion push_back übergeben habe.

    Es gab immer einen Fehler, wenn ich einen Konstruktor ohne Intialisierungsliste als Parameter übergeben habe. Bei der übergabe eines Konstruktors mit Intialisierungsliste gab es keine Probleme.

    Kann es sein, dass bei der Übergabe die Funktion und der Konstruktor gleicheitig ausgeführt werden und der Konstruktor keinen vorrang hat?

    Beispiel: vector.push_back( TestKlasse() );


  • Mod

    Du machst etwas anderes falsch. Zeig deinen Code.



  • Du übergibst keine Konstruktoren sondern ein temporäres Objekt des Typs TestKlasse. Natürlich wird der Konstruktor vorher aufgerufen. Alle Parameter einer Funktion werden erst evaluiert und erst dann wird die Funktion mit den evaluierten Werten aufgerufen.

    Mit der Initialisierungsliste meinst du hoffentlich nur weitere Parameter des Konstruktors, denn Initialisierungslisten sind nur in Konstruktordefinitionen zu finden.

    Also entweder dir fehlt ne Initialisierungsliste oder - wohl eher - hast du eben keinen parameterlosen und sogenannten Default-Konstruktor auf Lager. Das liegt dann entweder daran, dass deine Klasse technisch gesehen mit Startwerten gefüttert werden muss oder du hast bereits Konstruktoren definiert und die impliziten Konstruktoren fallen - schwupsdiwups - weg.



  • M1SMR schrieb:

    Hallo,

    ich habe ein Problem in meinem Code gefunden, bei dem ich ein Konstruktor als Parameter der vector Funktion push_back übergeben habe.

    Es gab immer einen Fehler, wenn ich einen Konstruktor ohne Intialisierungsliste als Parameter übergeben habe. Bei der übergabe eines Konstruktors mit Intialisierungsliste gab es keine Probleme.

    Kann es sein, dass bei der Übergabe die Funktion und der Konstruktor gleicheitig ausgeführt werden und der Konstruktor keinen vorrang hat?

    Beispiel: vector.push_back( TestKlasse() );

    du solltest die grundlagen wohl nochmal wiederholen, damit die begriffe auch stimmen und du weißt was du da eig übergibst bzw. machst!

    desweiteren gilt nornmalerweise von "innen nach außen"! (zumindest würde mir jetzt nix einfallen wo es anders ist 🙄 ...)


Log in to reply