Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Kopierkonstruktor

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
25.06.2010, 11:06 Uhr
caprifischer



Moin,

ich habe ein Problem mit meinem Kopierkonstruktor. Er soll eine tiefe Kopie erstellen, aber ich bekomme immer nur eine flache Kopie.


C++:
#include <iostream>
using namespace std;

class meinZahlString {
public:
     char * psz;

meinZahlString(const meinZahlString &m) {
     psz = new char[10]();
     strcpy(psz,m.psz);
};
}

int main() {
     char s1[] = "3456Hallo";
     meinZahlString mzs1(s1);

     // Kopierkonstruktor wird aufgerufen
     meinZahlString mzs2(mzs1);
     return 0;



Wir sollen quasi eine Klasse programmieren, die der String-Klasse ähnlich ist, aber in der jede Zeichenkette mit Ziffern beginnt.

Ich habe testweise erstmal die Länge 10 genommen, mir ist klar, dass ich die Länge dynamisch machen muss.

Gibt es auch eine Möglichkeit, die Zeichenkette zu kopieren, ohne strcpy zu benutzen?

Bin für jeden Tipp dankbar!

Gruß
Caprifischer

Dieser Post wurde am 25.06.2010 um 11:09 Uhr von caprifischer editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.06.2010, 11:47 Uhr
ao

(Operator)


Das Beispiel kompiliert nicht. Abgesehen von ein paar syntaktischen Kleinigkeiten fehlt noch ein Konstruktor, der ein const char [] oder const char * nehmen kann (für mzs1).

Aber der Kopierkonstruktor selber ist im Prinzip OK so, abgesehen davon, dass psz auf 0 geprüft werden sollte, bevor man was reinkopiert. Und dass das mit der festen Länge 10 noch nicht endgültig ist, schreibst du ja selber.

Natürlich brauchst du noch einen Destruktor (sonst Speicherleck), und wenn eine Klasse einen Kopierkonstruktor hat, braucht sie eigentlich immer auch einen operator=.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.06.2010, 17:11 Uhr
caprifischer



Ja, ich hatte nur Codeteile rauskopiert, wollte euch nicht den ganzen unwichtigen Code mitkopieren. Hat sich nun erledigt, der eigentliche Fehler lag woanders begraben, der Kopierkonstruktor funktioniert so wie er soll.

Trotzdem vielen Dank für die schnelle Hilfe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: