Bräuchte hilfe beim vereinfachen einer Objektausgabe. Bzw. bei einer Objektüberprüfung...
-
Hallo
bluecode hat dich bereits auf std:.vector aufmerksam gemacht, das übernimmt dür dich das Verwalten des dynamischen Arrays selber.
Bei deiner methodestirbt fällt auf, das du zuerst die nachfolgenden Objekte vorverschiebst und erst dann das eltzte löscht.
Du must aber zuerst das Objekt an Stelle n löschen, und dann die nachvollgenden Objekte alle um eins nach vorne verschieben.bis bald
akari
-
DragonShaolin schrieb:
void Frau::stirbtKind(int n) { delete kinder[n]; // Oder willst du nicht das n-te Kind löschen? for (int b = n; b < kinderanzahl - 1; b++) { kinder[b] = kinder[b+1]; } kinderanzahl -= 1; }edit: Da war wohl jemand schneller

-
ok das mit dem Vektor verstehe ich noch nicht ganz.
Ist irgendwie unlogisch das man erst ein objekt löscht und dann neu sortiert. Ich dachte dann würde ein Objekt fehlen beim sortieren. Naja es geht jetzt.
Danke dir.
-
Cyrill Roth schrieb:
ok das mit dem Vektor verstehe ich noch nicht ganz.
Mit vector ist der std::vector gemeint. Das ist eine Template Klasse welche für genau solche Zwecke geschaffen wurde

Ist irgendwie unlogisch das man erst ein objekt löscht und dann neu sortiert. Ich dachte dann würde ein Objekt fehlen beim sortieren.
Du löscht doch das Objekt, d.h. danach ist es _weg_ und du brauchst es nicht mehr mitsortieren. Bei deinem Code hast du sowieso das falsche Objekt gelöscht

edit: Yeah 400

-
Na gut dann sollte ich mir mal die Templates anschauen...
Ähm kann mir grad noch jemand sagen wie ich jetzt meine zeige_familie abändere, wenn der Ehemann stirbt? Also eine Abfrage ob das Objekt noch existiert. Nachdem ich mit delete Ehemann gearbeitet habe.
void Frau::zeige_familie() { cout << "aktueller Familienstatus : " << endl; //if (ehemann != NULL) cout << "Ehemann: " << ehemann->get_name() << endl; cout << "Ehemann: " << ehemann->get_name() << endl; if (kinderanzahl == 0) { cout << "Keine Kinder\n"; } else { for (int n = 0; n < kinderanzahl; n++) { cout << "Kind " << n + 1 << " : " << kinder[n]->get_name() << endl; } } cout << "\n\n"; }Sorry für die Fragerei...
Danke euch...
-
abfragen ob existiert:
if (ehemann == 0)blablablalöschen:
delete ehemann;
ehemann = 0;Normalerweise nimmt man 0 um anzuzeigen, dass das Objekt auf das ein Pointer zeigt noch nicht existiert bzw. bereits gelöscht wurde.
-
Jupp danke, hab ich auch gerade hinbekommen

Super Sache

Bald ist mein Programm fertig.
Dann noch der feinschliff. Naja dann hätte ich ja viel zu tun

-
Kann mir jemand noch sagen wie ich eine Pausefunktion in meinem Programm einbinde? Ich hab mal irgendwas von einer Sleep() Funktion gehört. Unser Prof hat in seiner Aufgabenstellung reingeschrieben das wir eine for-schleife machen sollen, aber das ist ja dann Rechnerabhängig.
-
Hallo
Ich hab mal irgendwas von einer Sleep() Funktion gehört
Dann benutz doch mal die Suchfunktion...
bis bald
akari
-
ok mußte nur die Windows.h einbinden
und dann einfach Sleep(zeit)