004
18.05.2015, 03:11 Uhr
Hans
Library Walker (Operator)
|
Hab das mal durch den Compiler (Open Watcom 1.9) gejagt, und dabei einige Fehlermeldungen erhalten. Einige Fehler hab ich behoben, aber zwei blieben übrig. Die hab ich an die entsprechende Stelle in den Quelltext kopiert.
C++: |
/* Datei: liste.cpp
Eine Personenverwaltung via verketteter Liste; von jemandem aus dem C/C++ Forum. www.fun-soft.de/showtopic.php?threadid=22198 */
#include <iostream> #include <vector> // schau dir an, wie dein Beispiel damit eleganter in C++ geht #include <stdio.h> // das gehört nicht in aktuelles C++
//... using namespace std; // sonst erkennt OpenWatcom kein cout, etc.
struct Personen { unsigned int nummer; char name[30]; // ist string keine Alternative? char vorname[30]; // ist string keine Alternative? struct Personen* next; };
// Funktionsprototypen ; die sind hier nötig, weil diese Funktionen erst hinter main() im Text stehen. void print(Personen* p); Personen* add(Personen* p);
int main() { Personen *Person = new Person[10000]; // new findet man nur noch selten in aktuellen Quelltexten -> siehe "C++ Container" für ähnliche Beispiele /* Compilermeldung: (Open Watcom 1.9) liste.cpp(30): Error! E498: col(30) syntax error before 'Person'; probable cause : incorrectly spelled type name */
char neu = 'Y'; // hier fehlte das Semikolon.
while (neu == 'Y') { add(Person); cout << "Weiter (Y/N)?\n" << endl; cin >> neu;
if (neu == 'N') break; } print(Person); }
void print(Personen* p) { Personen* temp =p; while (temp != NULL) { printf("%u %s %s \n", temp->nummer, temp->name, temp->vorname); // das geht auch mit cout! temp = temp->next; }; }
Personen* add(Personen* p) { Personen* temp = new Personen; // siehe oben und wo "endet" new? cin >> temp->nummer; cin >> temp->name;; cin >> temp->vorname;
if (temp != NULL) { temp->next = head->next; /* Compilermeldung: (Open Watcom 1.9) liste.cpp(73): Error! E029: col(22) symbol 'head' has not been declared ------ Stimmt. Und wo wird eigentlich *p verwendet? */
head->next = temp; } return temp; }
|
-- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. |