D
@Zhavok sagte in Klasse mit Konstruktor in Klasse verwenden:
Hallo zusammen
Ich befinde mich gerade in einer Situation die ich so noch nicht hatte. Ich habe eine Klasse mit Konstrukor. Zum Beispiel Numbers(1,3,5,7). Nun möchte ich die Numbers in einer neuen Klasse nutzen. Dort kann ich ja die Parameter nicht mit übergeben (außer in einer Methode). Setter für die Parameter bietet mir die Numbers-Klasse nicht. Wie kann ich also nun ein Numbers-Objekt in meiner Klasse erstellen?
Hier nochmal das Ganze in Code verpackt:
Numbers myNumbers(1,3,5,7); //So erstelle ich eigentlich ein Numbers-Objekt
class MyClass {
public:
//...
private:
//...
Numbers myNumbers(1,3,5,7); //So kann ich das Objekt nicht erstellen, da ich keine Parameter übergeben kann
};
Ich denke ihr versteht was ich meine
class MyClass {
private:
Numbers myNumbers{1,3,5,7};
};
So geht's auch
Generell ist die Initialisierungsliste da eher die Lösung prior c++11. Mit c++11 kann man obiges durchführen, was prinzipiell zu bevorzugen ist, da dies eben direkt für alle CTor-Überladungen gilt und man nicht über etwaiges chaining nachdenken muss.
Btw, deine Lösung sieht für den Compiler wie eine Funktionsdeklaration aus; und deswegen kannst du das so nicht machen.
PS: Es sei noch angemerkt, dass es manchmal Unterschiede zwischen Foo(1, 2, 3) und Foo{1,2,3} geben kann. Als Beispiel sei hier mal auf std::vector{1,2} vs std::vector(1,2) verwiesen.