Kopierkonstruktor
-
Ja, das ist soweit richtig, nur mußt du der Klasse auch mitteilen, daß sie einen Kopierkonstruktor hat:
class Person { public: Person(const Person&); } Person::Person(const Person& other) { //initialisiere mit den Elementen von 'other' } int main() { Person p1; //verändere p1 Person p2=p1;//<-verwendet Copy-Ctor ...
-
Ok danke ich habe es jetzt verstanden.
-
Bei mir brintg er Fehlermeldungen die ich nicht verstehe. Kann mir jemand da mal weiterhelfen.
#include <iostream> using namespace std; class Lawamat{ private: bool aktiv; bool buntwaesche; bool schleudern; int waschmenge; string eingabe; public: Lawamat(); Lawamat( const Lawamat & ); ~Lawamat(); void einschalten(); void auswahl(); void copy(); void paste(); }; //Methode einschalten void Lawamat::einschalten(){ aktiv = true; } //Methode auswahl (wurde bisschen geändert, die Einstellungen werden hier eingegeben und stehen nicht davor schon zur verfügüng. Beeinflusst die Methode paste! Aber funktioniert trotzdem!) void Lawamat::auswahl(){ int zustand=0; if (aktiv!=true) {} else { cout << "Waschart: (1) Buntwaesche ; (2) Wolle " << endl; cin >> zustand; if(zustand==1){buntwaesche=true;} else buntwaesche=false; cout << "Schleudern? (1) Ja ; (2) Nein " << endl; cin >> zustand; if(zustand==1){schleudern=true;} else schleudern=false; cout << "Waschmenge: "; cin >> zustand; waschmenge = zustand; cout << endl << endl; } } //Methode copy void Lawamat::copy() { if(aktiv!=true){} else { string waschart1,waschart2,eingabe; int menge; if(buntwaesche == true) { waschart1 =" \"Buntwaesche\""; } else { waschart1 =" \"Wolle\""; } if(schleudern == true) { waschart2 ="\"Schleudern\""; } else { waschart2 ="\"Nichtschleudern\""; } menge = waschmenge; char daten[100]; sprintf(daten, "%i", waschmenge); eingabe = daten; eingabe.append(" kg Waesche wurde als Waschmenge eingestellt.\n\n"); eingabe.append("Als Waschart wurde "); eingabe.append(waschart1); eingabe.append(" ausgewaehlt.\n\n"); eingabe.append(waschart2); eingabe.append(" wurde ausgewaehlt.\n\n"); cout << eingabe.data(); // nur zur Verdeutlichung } } //Methode paste void Lawamat::paste () { if(aktiv!=true){} else { string waschart1,waschart2,eingabe; int menge; if(buntwaesche == true) { waschart1 =" \"Buntwaesche\""; } else { waschart1 =" \"Wolle\""; } if(schleudern == true) { waschart2 ="\"Schleudern\""; } else { waschart2 ="\"Nichtschleudern\""; } menge = waschmenge; char daten[100]; sprintf(daten, "%i", waschmenge); eingabe = daten; eingabe.append(" kg Waesche wurde als Waschmenge eingestellt.\n\n"); eingabe.append("Als Waschart wurde "); eingabe.append(waschart1); eingabe.append(" ausgewaehlt.\n\n"); eingabe.append(waschart2); eingabe.append(" wurde ausgewaehlt.\n\n"); } } //Kopierkonstruktor Lawamat::Lawamat(const Lawamat &src) { aktiv=src.aktiv; buntwaesche=src.buntwaesche; schleudern=src.schleudern; waschmenge=src.waschmenge; eingabe=src.eingabe; } int main(){ //main wurde zur test eingefügt! Lawamat test1; test1.einschalten(); test1.auswahl(); test1.copy(); test1.paste(); //Kopierkonstruktor verwenden Lawamat test2=test1; test2.einschalten(); test1.auswahl(); return 0; }
-
Bei mir brintg er Fehlermeldungen die ich nicht verstehe
Und ich verstehe nicht, wie man ne halbe Seite Code OHNE die Fehlermeldungen posten kann!
-
Delikanli schrieb:
Bei mir brintg er Fehlermeldungen die ich nicht verstehe.
Sag einfach welche und den entsprechenden Codeausschnitt, nicht alles. Keiner hat Lust das alles durchzulesen.
<edit> Nun war ich auch noch zu langsam
</edit>Gruß
-
Also die Kopierkonstruktoren Funktionieren nicht.
Fehler:Nichtaufgeloestes externes Symbol "public: __thiscall Lawamat::~Lawamat(void)" (??1Lawamat@@QAE@XZ)Nachdem ich die Sachen eingefügt habe hat es nicht mehr funktioniert
[cpp]
public:
Lawamat(); //==========habe ich eingefügt===========
Lawamat( const Lawamat & ); //==========habe ich eingefügt===========
~Lawamat(); //==========habe ich eingefügt===========
void einschalten();
void auswahl();
void copy();
void paste();};
...
....//Kopierkonstruktor
Lawamat::Lawamat(const Lawamat &src) //==========habe ich eingefügt===========
{
aktiv=src.aktiv;
buntwaesche=src.buntwaesche;
schleudern=src.schleudern;
waschmenge=src.waschmenge;
eingabe=src.eingabe;
}...
...
//Kopierkonstruktor verwenden //==========habe ich eingefügt===========
Lawamat test2=test1;
test2.einschalten();
test1.auswahl();...
..
[cpp]
-
Der Kopierkonstruktor ist in Ordnung, aber der Default-Konstruktor ist nicht implementiert.
Lawamat::Lawamat(){}
-
Denn habe ich eingefügt, aber dann bringt er wieder Fehlermeldungen:
Linker-Vorgang läuft...
Aufgabe2.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: __thiscall Lawamat::~Lawamat(void)" (??1Lawamat@@QAE@XZ)
Debug/block3yasin.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.
-
Diesmal isses der Destruktor...
-
Ok jetzt gehts. Ich fisch habe meine Klasse Falsch geschrieben Danke für deine Hilfe. Jetzt klappt alles bye