S
Hi HändyÄndy,
auch wenn dein ursprüngiches Problem bereits gelöst ist: Die Methode ist "nicht optimal" - sie tut nämlich etwas Anderes als man so spontan vermutet.
Mit "toString" wird in 99,9% der Fälle erwartet, dass man hinterher einen String in den Händen hält - und nicht, dass man auf der Konsole was ansehen kann.
Entweder (falls du wirklich auf die Konsole ausgeben willst) würde ich sowas wie "print()" oder so erwarten.
Oder (falls es tatsächlich in einen String umgewandelt werden soll) du änderst toString() derart, dass es in einen ostringstream schreibt und gibst mittels ostringstream::str() einen string zurück.
Aber: der toString-Gedanke kommt aus Java (ist auch nicht schlecht) und in C++ ist es bei sowas deutlich üblicher, den operator<<() zu überladen und den Aufrufer selbst entscheiden zu lassen, wohin er die Daten dann transferieren will (Konsole, string, file, Netzwerk, ....).
Wäre auch nicht schwer:
// ruhig als freie Funktion - ist üblich und müllt nicht die CandidatesTable-Schnittstelle zu
ostream& operator<<(ostream& ost, CandidatesTable const& c) {
struct tm *tminfo;
time_t now = time(0);
ost << now << endl;
tminfo = localtime( &now );
ost << endl << "Aktuelle Kandidaten von " << asctime( tminfo );
ost << "--------------------------------------------" << endl;
for( int i = 0; i < length; ++i ) {
time_t t_ = t[i];
tminfo = localtime( &t_ );
ost << (i+1) << ".\t" << c.names[i] << "\t\t" << c.llrs[i] << "\t" << tminfo->tm_hour << ":" << tminfo->tm_min << ":" << tminfo->tm_sec << "h" << endl;
}
ost << "--------------------------------------------" << endl;
}
// Aufruf easy:
int main() {
CandidatesTable c; // irgendwie konstruiert
cout << c; // af Konsole
ofstream out("CandidatesTable.out");
out << c; // identisch direkt in File
myNetStream m;
m << c;
...
Gruß,
Simon2.