Zeiger auf eigene Klasse, es passiert nichts ...
-
// ClassStudent.cpp #include <string> #include <iostream> #include <sstream> using namespace std; class Student { private: // TODO: attributes string familyName; string firstName; string domicile; string street; public: // TODO: signatures for constructor, read and toString Student(); Student(string, string, string, string); void read(); string toString(); }; Student::Student(){ familyName = ""; firstName = ""; domicile = ""; street = ""; } Student::Student(string famN, string firstN, string dom, string str) { // TODO: complete constructor familyName = famN; firstName = firstN; domicile = dom; street = str; } void Student::read() { // TODO: input from console cout << "Familienname:" <<endl; getline(cin, familyName); cout << "Vorname:" <<endl; getline(cin, firstName); cout << "Ort und Postleitzahl" <<endl; getline(cin, domicile); cout << "Strasse und Hausnummer" <<endl; getline(cin, street); system("cls"); } string Student::toString() { // put all attributes in a "nice" string stringstream ss; // stream from sstream.h ss << endl << "____________ Person___________" << endl << firstName << endl << familyName << endl << domicile << endl << street << endl << "______________________________" << endl; return ss.str(); // convert stream ss into a string } int main() { // TODO: test class Student //Student ich; //ich.read(); //cout << ich.toString(); //Student du; //du.read(); //cout << du.toString(); //cout << ich.toString(); Student *studentpointer = new Student; studentpointer->read(); studentpointer->toString(); delete studentpointer; cout<< endl << endl; system("PAUSE"); return 0; }Vorab, ja es ist eine Hausaufgabe. Wir sollten die Klasse Student erstellen mit ein paar Funktionen und natürlich Operator und danach noch einen Student "dynamisch" erstellen.
Nun ja ich hab das jetzt so verstanden, dass man einfach einen Zeiger auf nen neuen Studenten anlegen sollten, dies Funktioniert aber nicht, bzw. nach dem read() gibt der zeiger nichts mehr aus ...
Habe ich irgendwo einen riesigen Bock geschossen ohne es zu bemerken ?
Oder habe ich das mit dem dynamisch falsch verstanden ?[Ps.: sry das ich den ganzen Code auf einmal reingeknallt hab]
Ich bin für jeden Hilfe dankbar, Oli
-
_ _ schrieb:
Nun ja ich hab das jetzt so verstanden, dass man einfach einen Zeiger auf nen neuen Studenten anlegen sollten, dies Funktioniert aber nicht, bzw. nach dem read() gibt der zeiger nichts mehr aus ...
Ein Zeiger kann auch nichts ausgeben. Das Programm gibt danach noch einen Zeilenumbruch aus (über endl). Ansonsten steht da keine Ausgabeanweisung. Vielleicht wolltest du das Ergebnis von studentpointer->toString ausgeben, statt es zu verwerfen?
-
Nun ja ich hab das jetzt so verstanden, dass man einfach einen Zeiger auf nen neuen Studenten anlegen sollten, dies Funktioniert aber nicht, bzw. nach dem read() gibt der zeiger nichts mehr aus ...
Was meinst du, es gibt nichts aus? Du schreibst die Daten in einen Stringstream.
toStringgibt den resultierenden String zurueck, aber du gibst ihn nicht aus. Einen Funktionsaufruf dieser Art nennt man eine discarded value expression.Wolltest du eher
std::cout << studentpointer->toString();?
~Edit: Zu spaet, meh.~
-
Bashar schrieb:
_ _ schrieb:
Nun ja ich hab das jetzt so verstanden, dass man einfach einen Zeiger auf nen neuen Studenten anlegen sollten, dies Funktioniert aber nicht, bzw. nach dem read() gibt der zeiger nichts mehr aus ...
Ein Zeiger kann auch nichts ausgeben. Das Programm gibt danach noch einen Zeilenumbruch aus (über endl). Ansonsten steht da keine Ausgabeanweisung. Vielleicht wolltest du das Ergebnis von studentpointer->toString ausgeben, statt es zu verwerfen?
Ouh ja genau das wars, Eiskalt das Ausgeben vergessen und ich Depp sitz da jetzt eine halbe Stunde davor und raffs einfach nicht, vielen Dank !