Veröffentlicht 4. Juli 200322 j 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
4. Juli 200322 j Wie hast du den Konstruktor denn genau überladen und was für Werte hast du eingeben und welche Werte kahmen raus?
4. Juli 200322 j 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
4. Juli 200322 j 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; }
4. Juli 200322 j 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.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.