032
03.07.2004, 01:37 Uhr
songbird
|
ok, dann weiß ich für's nächste Mal Bescheid und nochmal sorry.
Das nächste Mal ist übrigens auch schon da :
C++: |
//head.cpp //hier ist der Einstieg
void Head::createProject(Project* projects[], Staff* persons[]) { Project pro; //hier werden einige Daten zum erstellen eines Staffs und eines Projektes abgefragt (mit pro passiert aber nix mehr) pro.setMembers(*persons[setter]); }
//project.cpp
void Project::setMembers(Staff _member) { int writer = 0; while(&members[writer] != NULL)//erste nicht besetzte Array-Stelle suchen { writer++; } for(int i = 0; i < writer; i++) { if(members[i].getPersonalNr() == -1)//falls irgendwo ein Default-Konstruktor steht, soll der überschrieben werden { writer = i; } } members[writer] = _member; }
//project.h
Staff members[20];
|
Das Problem ist jetzt, dass das Programm einfach anhält, nachdem es in setMembers(...) verzweigt ist.
Erst hatten wir es so, dass setMembers(...) direkt die erste leere Array-Stelle mit übergeben wurde. Da sah setMembers() also nur so aus:
C++: |
void Project::setMembers(Staff _member, int writer) { members[writer] = _member; }
|
und wurde natürlich durch pro.setMembers(*persons[setter], i); aufgerufen. Da ging alles wunderbar. So konnten wir es aber nicht lassen, da wir auf i bzw writer nicht überall Zugriff haben und es so nicht generell übergeben können...
Der Fehler muss also in dem Teil liegen:
C++: |
int writer = 0; while(&members[writer] != NULL)//erste nicht besetzte Array-Stelle suchen { writer++; } for(int i = 0; i < writer; i++) { if(members[i].getPersonalNr() == -1)//falls irgendwo ein Default-Konstruktor steht, soll der überschrieben werden { writer = i; } }
|
Wie gesagt, der Kompiler meckert nicht und das Programm hält einfach nur an und scheint auf irgendwas zu warten
Weiß jemand Rat? Dieser Post wurde am 03.07.2004 um 01:38 Uhr von songbird editiert. |