new und delete in und für klassen
-
Hallo Leute,
Ich habe ein ziemliches Problem mit new und delete.
Und zwar bekomme ich es einfach nicht hin, dass z.B in einer
Klasse, nennen wir sie mal "Mitarbeiterliste", die Mitarbeiter, welche
vom Benutzer Eingegeben werden und ebenfalls in einer Klasse "Mitarbeiter"
definiert sind, gespeichert und auch wieder entfernt werden könne.
Beispiel:class Mitarbeiter
{
private:string Name;
string Vorname;public:
Mitarbeiter(string n, string v)
:Name(n), Vorname(v){}
};
class Mitarbeiterliste
{
private:Mitarbeiter m;
public:
//Ab Hier gibt's große Probleme. Hab einiges versucht, aber bin
//mitlerweile an einen Punkt angelangt wo ich plötzlich
//nichts mehr verstehe};
int main()
{
string name;
string vorname;cout<<"Name"<<endl;
cin>>name>>endl;
cout<<"Vorname"<<endl;
cin>>vorname>>endl;return 0;
//Und wie genau muss die mainfunktion aussehen wenn man new und delete benutzen will?//
}
-
//Und wie genau muss die mainfunktion aussehen wenn man new und delete benutzen will?//
Warum willst du sie denn nutzen? Ist das eine Übungsaufgabe, std::vector nach zu programmieren? Falls ja: Lass dich doch von diesem inspirieren, wie der das wohl intern macht. Wichtiges Stichwort, falls dies so nicht dran gekommen sein sollte: RAII
Ansonsten weiß ich nicht genau, was deine Frage ist, daher gibt's nur Allgemeinfloskeln. "Ab Hier gibt's große Probleme" taugt eben nur dazu, dass wir nun wissen, dass du große Probleme hast, aber nicht welcher Art diese sind.
-
new and delete wird nur bei zeigern angewendet.
du hast in Mitarbeiterliste, kein Mitarbeiter zeiger.
wenn du in einen vector von objekten was rein schreiben willst,
geht das mit push_back()und von hinten wieder geloescht mit pop_back()
mit erase(iterator_position) kann man auch gezielt aus den vector loeschen,
aber dafuer brauchst du ein iterator, und ich denk mal dass du das nocht nicht hattest.Falls die Aufgabenstellung new und delete vorschreibt:
Mitarbeiter *m = new Mitarbeiter; //mitarbeiter anlegen mit new
delete *m; //mitarbeiter loeschen bzw speicher wieder freigeben mit delete