invalid operands of types 'char*' and 'char' to binary 'operator<<'
-
Hallo.
Habe hier ein kleines Problem, und zwar verstehe ich diese Fehlermeldung irgendwie nicht...Hier der Code:
// Gib eine ASCII-Zeichenfolge mit dem gespeicherten Format zurück // Format = 1 Aug 29, 1991 // Format = 2 29.8.91 // Format = 3 29.8.1991 // Format = 4 29 Aug 1991 Militärische Zeit // Format = ? Alles andere wird als Format 1 interpretiert char* Date::generiereFormatiertesDatum() { srand(time(NULL)); int t = (rand()% 31) +1; int m = (rand()% 12) +1; int j = (rand()% 1999-1990+1) +1990; this->setzeDatum(t,m,j); switch(this->format) { case 1: return this->getMonatsName() << ' ' << this->getTag() << ", " << this->getJahr(); case 2: return this->getTag() << '.' << this->getMonat() << '.' << this->getJahr()%100; case 3: return this->getTag() << '.' << this->getMonat() << '.' << this->getJahr(); case 4: return this->getTag() << '.' << this->getMonatsName() << ' ' << this->getJahr(); } }Hier die Fehlermeldungen:
http://www.imagebanana.com/view/jwwwgs26/Unbenannt.PNGBhoa, wäre euch sehr dankbar, wenn ihr mir helfen könntet

-
Die Fehlermeldung ist nur das Symptom. Beschäftige dich mit Zeichenketten in C++. Bei dir ist, offen gesagt, alles vollkommen falsch. Ein erster, wichtiger Schritt wäre std::string. Die sind wesentlich anfängerfreundlicher als die Frickelei mit char-Arrays (Wie kommst du überhaupt auf die Idee? Hast du ein statt C++ ein Buch über C gelesen?). Damit kannst du auch Zeichenketten verknüpfen. Das geht mit char-Arrays nämlich nicht (so einfach). Der zweite Schritt wäre dann std::stringstream, da kannst du dann auch Zeichenketten und andere Datentypen zusammensetzen, so wie du es hier versuchst.
An deinem konkreten Code ist hier jedoch nichts zu retten. Alles falsch. Ohne string und stringstream geht das nur mit gröbsten Verrenkungen (oder mit der C-Bibliothek). Mit ist es ganz einfach. Dafür musst du sie dir aber erst einmal angucken.
-
Hinzu kommt noch, dass
srand(time(NULL));nur einmal im Code aufgerufen werden sollte. Bei jedem Funktionsaufruf das Seed mit dem gleichen Wert zu initialisieren fuehrt nur dazu, dass stehts die gleichen (dann nicht mehr so zufaelligen) Zufallszahlen generiert werden.