korea1 Geschrieben 4. Juli 2003 Geschrieben 4. Juli 2003 hi, hab folgenden code: //############# header file ############# class bruch { protected: int zaehler; int nenner; public: bruch(); void bruch_eingeben (void); void bruch_ausgeben (void); ~bruch(); }; bruch::bruch(void) { zaehler = 0; nenner = 1; } void bruch::bruch_eingeben (void) { cout << "geben sie den zaehler ein:"; cin >> zaehler; cout << "geben sie den nenner ein:"; cin >> nenner; } void bruch::bruch_ausgeben (void) { cout << "der von ihnen eingegebene bruch lautet: " << zaehler << "/" << nenner << endl << endl; } bruch::~bruch(void) { } //########### hauptprogramm ############ #include "Brüche.h" void main (void) { cout << "**** Brueche eingeben *****" << endl; bruch mein_bruch; mein_bruch.bruch_eingeben(); mein_bruch.bruch_ausgeben(); bruch mein_bruch2(1,4); mein_bruch2.bruch_ausgeben(); cout << "******* Ende *******" << endl; getch(); } [/PHP] wie bekomm ich das hin, dass ich [color=red]mein_bruch2[/color] mit 1 und 4 initialisieren kann? dazu brauch ich einen zusätzlichen konstruktor,od? kann mir dass mal einer zeigen, habs zwar probiert, hat aber nicht funktioniert. meine idee war in der klasse: [PHP]bruch(int,int); und bei den methodendefinitionen dann: bruch::bruch(int,int){}; da sind dannn aber ziemlich komische werte bei rausgekommen. danke korea1 Zitieren
Guybrush Threepwood Geschrieben 4. Juli 2003 Geschrieben 4. Juli 2003 Wie hast du den Konstruktor denn genau überladen und was für Werte hast du eingeben und welche Werte kahmen raus? Zitieren
korea1 Geschrieben 4. Juli 2003 Autor Geschrieben 4. Juli 2003 hi, dass mit dem überladen hab ich noch nie gemacht, soll ich jetzt aber. hm... ?? also ich hab ja siehe code oben mit bruch mein_bruch2(1,4); ein neues obj erstellt. dieses sollte als wert den bruch 1/4 haben und auch ausgeben. bekommen habe ich aber folgendes: -858993460/-858993460 je nach initialisierung müsste sich das programm doch den richtigen konstruktor raussuchen, oder? also bruch neuer_bruch; => gibt mir demnach ja 0/1 s. 1. konstruktor bruch(); burch neuer_bruch2(1,4) => sollte dann doch 1/4 ergeben oder hab ich da was falsch verstanden? korea1 Zitieren
Gast roaxius Geschrieben 4. Juli 2003 Geschrieben 4. Juli 2003 Es reicht nicht, wenn du (int, int) als Parameter nimmst, du musst auch einen Variablennamen mitgeben. Beispiel: in der *.h: class KomplexZahl { public: KomplexZahl(); KomplexZahl(int zahl); // expliziter Konstruktor ... } in der *.cpp: KomplexZahl::KomplexZahl() { ... } KomplexZahl::KomplexZahl(int zahl) { ergebnis = zahl; } Zitieren
Klotzkopp Geschrieben 4. Juli 2003 Geschrieben 4. Juli 2003 Original geschrieben von roaxius KomplexZahl::KomplexZahl(int zahl) { ergebnis = zahl; } [/code] [/b]Initialisierungslisten sind besser: [CODE]KomplexZahl::KomplexZahl(int zahl) : ergebnis( zahl ) { } Achtung, die Ausführungsreihenfolge der Initialisierungen hängt von der Reihenfolge in der Klassendeklaration ab, nicht von der Reihenfolge in der Initialisierungsliste. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.