Vector und Instanz?
-
Hi!
Also ich habe eine Klasse Mitarbeiter und eine Instanz davon. Diese Instanz will ich in einem Vector ablegen. Alles kein Problem.
Jetzt zum Problem:
Ich will diese Instanz wieder auslesen, und dann eine Funktion ausführen, die z.B. den Namen des Mitarbeiters ausgibt. Das macht er aber dann nicht.
Mein Versuch:
CMitarbeiter person = Vector[0]; person.getName();
Er macht es, aber gibt den Namen nicht aus. An der Funktion liegt es nicht, die stimmt.
Vielleicht kann mir da jemand helfen!!!
Gruß Friggel
-
Naja, wenn ich meine Kristallkugel aus Flensburg schon zurück hätte bestimmt
Hast Du Zeiger in Deiner Klasse und den Kopierkonstruktor vergessen ? Oder einen Kopierkonstruktur falsch geschrieben ?
Zeig mal bitte die Deklaration der Klasse.
-
Ich hab keinen kopierkonstruktor! Brauch ich den dazu???
Gruß Friggel
-
Knuddlbaer schrieb:
Zeig mal bitte die Deklaration der Klasse.
-
class CMitarbeiter { private: string name; string vorname; string gebDatum; int alter; public: void setName(string name); void setVorname(string vorname); void setGebDatum(string gebDatum); void setAlter(int alter); string getName() { return name; } string getVorname() { return vorname; } string getGebDatum() { return gebDatum; } int getAlter() { return alter; } }; //Geburtstagsdatum setzen void CMitarbeiter::setGebDatum(string gebDatum) { gebDatum =gebDatum; } //Name setzen void CMitarbeiter::setName(string name) { name =name; } //Vorname setzen void CMitarbeiter::setVorname(string vorname) { vorname = vorname; } //Alter setzen void CMitarbeiter::setAlter(int alter) { alter = alter; }
-
FriggelTest schrieb:
CMitarbeiter person = Vector[0]; person.getName();
Wo wird denn hier was ausgegeben?
-
getter methoden als const deklarieren, damit du auch auf konstante objekte zugreifen kannst.
string getName() const;
cu
-
person.getName() wird dann mit cout ausgegeben.
newPerson = Perso_Verwaltung[0]; cout << newPerson.getName();
Den Kopierkonstruktor hab ich jetzt drin:
CMitarbeiter(const CMitarbeiter & newPerson) { name = name; vorname = vorname; gebDatum = gebDatum; alter = alter; }
Warum geht das nicht???
Gruß Friggel
-
Kopierkonstruktor brauchst du hier nicht (du hast keine zeiger). Das Problem liegt in der Funktion SetName!!!! It macht keine assignment.
-
Was macht setName???
-
FriggelTest schrieb:
Was macht setName???
Was macht
x=x
?das liest sich somit wie
'Lies den Wert der Variablen x aus und kopiere ihn in die Variable x'Und irgendwie wird da nicht viel getan - wozu soll ich den Wert von x nach x kopieren, wenn er ja sowieso schon in x steht?
Wie wäre es mit
this->vorname=vorname;this->vorname ist das vorname der Klasseninstanz und vorname der übergebene Parameter (welchen man btw per const reference übergeben sollte)
-
Hey cool danke, jetzt funktionierts natürlich!
Ich glaub allein wär ich da jetzt nie drauf gekommen.
Gruß Friggel