N
Übrigens: Der Code ist grauenhaft. Du solltest wissen, dass man C++ nicht so programmiert. Was du machst ist C-Code, der in Klassen eingepackt ist. Und dann ist es noch schlechter C-Code. Nimm das nicht persönlich, aber es gibt nichts Schlimmeres, als sowas schönzureden.
Damit du mit dieser Aussage auch was anfangen kannst, hier ein paar Verbesserungsvorschläge. Ich verstehe, falls du gewisse Dinge hiervon noch nicht kennst, aber du könntest dir diese für später merken oder wieder einmal zu diesem Thread zurückkehren. Denn es handelt sich um Punkte, die in C++ zu den essentiellen Grundlagen gehören.
Verwende Code wieder. Innerhalb copyneuKunde kannst du zum Beispiel deleteneuKunde aufrufen, um den Zielkunden zu überschreiben.
Klassen sind unter Anderem gerade dazu da, externe Funktionen zur Implementierung trivialer Funktionalität wie dem Kopieren eines Objekts zu vermeiden. Du wirst sicher noch was von Konstruktor, Kopierkonstruktor, Zuweisungsoperator und Destruktor hören.
Grundsätzlich wird in modernem C++ manuelle Speicherverwaltung vermieden, wo es nur geht, und durch Konzepte wie RAII abgelöst. Auch die Zeichenkettenverwaltung mit C-Strings ist inhärent fehleranfälig und unkonfortabel. In C++ gäbe es dafür std::string .
Dazu gibts noch kleinere Fehler, die mit dem gerade erwähnten Punkt zusammenhängen. Zum einen hast du bei
delete [] k->name;
*k->name = NULL;
eine Dereferenzierung zu viel, zum anderen darfst du nicht mit
strcpy(k->name, name);
in einen Nullzeiger kopieren. Und hier
nach->name = new char[100];
nach->name = "test";
hast du ein Memory Leak, weil du gleich nach->name überschreibst.
Was mich hingegen eher erstaunt, ist, dass du bereits Const-Correctness (bei copyneuKunde() ) richtig anwendest. Das beachten viele Leute, die C++ lernen, eher spät.