cout nicht deklarierter bezeichner trotz using namespace std oO
-
Hallo,
ich finde meinen Fehler absolut nicht.. ich bekomme folgende Fehlermeldung:
1>------ Erstellen gestartet: Projekt: Mastermind, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>MastermindDigits.cpp
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(38) : warning C4244: 'Argument': Konvertierung von 'time_t' in 'unsigned int', möglicher Datenverlust
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(59) : error C2065: 'cout': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(59) : error C2065: 'endl': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(94) : error C2065: 'cout': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(94) : error C2065: 'endl': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(95) : error C2065: 'cout': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(95) : error C2065: 'endl': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(102) : error C2065: 'cout': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(102) : error C2065: 'endl': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(111) : error C2065: 'cout': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(111) : error C2065: 'endl': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(119) : error C2065: 'cout': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(119) : error C2065: 'endl': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(126) : error C2065: 'cout': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(126) : error C2065: 'endl': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(141) : error C2065: 'cout': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(141) : error C2065: 'endl': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(146) : error C2065: 'cout': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(146) : error C2065: 'endl': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(154) : error C2065: 'cout': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(154) : error C2065: 'endl': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(161) : error C2065: 'cout': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(161) : error C2065: 'endl': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(161) : error C2065: 'endl': nichtdeklarierter Bezeichner
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(171) : error C2600: 'MastermindDigits::operator =': Vom Compiler generierte spezielle Memberfunktion kann nicht definiert werden (vorherige Deklaration in der Klasse erforderlich)
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(172) : error C2065: 'cout': nichtdeklarierter Bezeichner
1> Diese Diagnose trat in der vom Compiler generierten Funktion "MastermindDigits &MastermindDigits::operator =(const MastermindDigits &)" auf.
1>d:\documents\visual studio 2008\projects\mastermind\mastermind\masterminddigits.cpp(172) : error C2065: 'endl': nichtdeklarierter Bezeichner
1> Diese Diagnose trat in der vom Compiler generierten Funktion "MastermindDigits &MastermindDigits::operator =(const MastermindDigits &)" auf.
1>Code wird generiert...
1>Kompilieren...
1>main.cpp
1>Code wird generiert...
1>Das Buildprotokoll wurde unter "file://d:\Documents\Visual Studio 2008\Projects\Mastermind\Mastermind\Debug\BuildLog.htm" gespeichert.
1>Mastermind - 26 Fehler, 1 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========Meine Quelldateien:
Mastermind.h
#ifndef __MASTERMINDDIGITS_H #define __MASTERMINDDIGITS_H #include <ctime> #include <cstdlib> using namespace std; class MastermindDigits { public: MastermindDigits(int); MastermindDigits(const MastermindDigits & k); ~MastermindDigits(); void makeDigitsToGuess(void); int locationRight(MastermindDigits); int locationWrong(MastermindDigits); operator int(); private: int * digits; }; #endifMastermind.cpp
#include "MastermindDigits.h" #define DEBUG using namespace std; MastermindDigits::MastermindDigits(int num) { digits = new int[4]; if(num==0 || num < 1111 || num > 6666) makeDigitsToGuess(); else { digits[0] = num / 1000; digits[1] = num / 100 % 10; digits[2] = num / 10 % 10; digits[3] = num % 10; } } MastermindDigits::MastermindDigits(const MastermindDigits & k) { digits = new int[4]; digits[0] = k.digits[0]; digits[1] = k.digits[1]; digits[2] = k.digits[2]; digits[3] = k.digits[3]; } MastermindDigits::~MastermindDigits() { //cout << "KILLING!"<<endl; delete [] digits; } void MastermindDigits::makeDigitsToGuess(void) { srand(time(0)); for(int i = 0; i < 4; i++) digits[i] = rand() %6 +1; } int MastermindDigits::locationRight(MastermindDigits k) { int rval = 0; for(int i =0; i < 4; i++) { if (k.digits[i] == digits[i]) rval++; } return rval; } int MastermindDigits::locationWrong(MastermindDigits k) { #ifdef DEBUG cout << "--- DEBUG ---" << endl; #endif bool already; int chkpos = 0; int dontCheck[4] = {0,0,0,0}; int inK; //count how many times the digit is found in array of K int inThis; //count how many times digit is in *this array int locationWrong = 0; //this stores the final number we return when done int found = 0; //this stores how often our digit is in our objects digit array int tmp; //holds the digit we are looking for int max; int foundR = 0; for(int loop=0;loop<4;loop++) { inThis= 0; inK = 0; found = 0; foundR = 0; tmp = digits[loop]; //take a digit out of array for(int c=0;c<4;c++) //did we already check for it? if(tmp==dontCheck[c]) already=true; if(!(already)) { for(int i=0;i<4;i++) { if(tmp == digits[i]) //how many times is digit in our array inThis++; if(tmp == k.digits[i]) //how many times is digit in the K array inK++; } #ifdef DEBUG cout << tmp << " ist " << inThis << " mal in " << *this << endl; cout << tmp << " ist " << inK << " mal in " << k << endl; #endif if(inK < inThis) max = inK; else max = inThis; #ifdef DEBUG cout << "max resultat = " << max << endl; #endif for(int loop2=0; loop2<4;loop2++) //check how many times digit is in k array { if((k.digits[loop2] == tmp) && digits[loop2] != tmp) { found++; #ifdef DEBUG cout << tmp << " gefunden. resultat + 1 " << endl; #endif } if((k.digits[loop2] == tmp) && digits[loop2] == tmp) { //found--; foundR++; #ifdef DEBUG cout << tmp << " an gleicher stelle gefunden. endresultat - 1 " << endl; #endif } } if(found > max) { #ifdef DEBUG cout << found << " > als " << max << ". resultat = " << max << endl; #endif found = max; } if(foundR > 0) { found = found - foundR; } if(found < 0) { found = 0; } locationWrong += found; #ifdef DEBUG cout << "endresultat = " << locationWrong << endl; #endif dontCheck[chkpos] = tmp; //put it in dontCheck list, so we dont check for it again chkpos++; //increment chkpos, so we put next digit in a differen place in array #ifdef DEBUG cout << "Lege " << tmp << " in dontCheck List" << endl; #endif } else { already=false; #ifdef DEBUG cout << tmp << " in dontCheck Liste." << endl; #endif } } #ifdef DEBUG cout << "---END DEBUG ---" << endl << endl; #endif return locationWrong; } MastermindDigits::operator int() { return digits[0] * 1000 + digits[1] * 100 + digits[2] * 10 + digits[3]; } MastermindDigits& MastermindDigits::operator=(const MastermindDigits& op) { cout << "= OPERATOR" << endl; if(this==&op) return *this; //Schutz vor selbstzuweisung digits = new int[4]; digits[0] = op.digits[0]; digits[1] = op.digits[1]; digits[2] = op.digits[2]; digits[3] = op.digits[3]; return *this; }main.cpp
#include "MastermindDigits.h" #include <iostream> using std::cout; using std::cin; using std::endl; #define M MastermindDigits int main() { int eingabe; int Rval=0; int Wval=0; int tries = 8; bool goodInput = false ; bool testmode = false; cout << endl << endl << "MasterMind!" << endl << endl; while(!(goodInput)) { cout << "Geben Sie eine Zahl zwischen 1111 und 6666 ein fuer Testmodus" << endl << "oder 0 fuer ein Spiel" << endl << "-> "; cin >> eingabe; if((eingabe==0) ||( eingabe > 1111) && (eingabe < 6666)) goodInput=true; } if(eingabe!=0) { cout << "Testmodus!" << endl << "Die Zahl ist " << eingabe << endl; testmode = true; } else { cout << endl << "Das Spiel beginnt!" << endl; } MastermindDigits guessme(eingabe); while(Rval!=4 && tries > 0) { goodInput=false; if(!testmode) { if(tries > 1) cout << "Sie haben noch " << tries << " Versuche" << endl << endl; else cout << "Sie haben noch einen letzten Versuch!" << endl << endl; } while(!(goodInput)) { if(testmode) cout << "Testmodus!" << endl << "Zahl ist " << guessme << endl; cout << "Was raten Sie: "; cin >> eingabe; if(eingabe > 6666 || eingabe < 1111) { goodInput = false; cout << "Zahl muss zwischen 1111 und 6666 liegen" << endl; } else goodInput=true; } Rval = guessme.locationRight(M (eingabe)); Wval = guessme.locationWrong(M (eingabe)); cout << "Sie raten: " << eingabe << " Computer antwort: " << Rval << " an der richtigen Stelle; sonst " <<Wval<<" richtig" << endl; if(!(testmode)) tries--; } cout << endl; if(Rval==4) cout << "Sie haben gewonnen!" << endl; else cout << "Sie haben verloren!" << endl; cout << "Die richtige Antwort war: " << guessme << endl; /* MastermindDigits obj1 = MastermindDigits(1234); MastermindDigits obj2(2345); obj2 = obj1; cout << "Obj1 " << obj1 << endl << "Obj2 " << obj2 << endl; */ return 0; }Ich hab auch schon versucht das using namespace std nur in der header datei zu haben, hab sie mal hier entfernt mal dort hinzugefügt.... aber er will einfach nicht...
Was überseh ich denn ich hab schon hundertmal so mit cout gearbeitet, also using namespace std und nur cout oO
-
also entweder du inkludierst noch in den Files, in welchen du Elemente von iostream verwendest, iostream, also in MastermindDigits.h ( bzw MastermindDigits.cpp, da du nur dort cout verwendest), oder stellst die include-Reihenfolge in main.cpp so um, dass dort zuerst iostream inkludiert wird und dann MastermindDigits. Aber ich würde den Weg vorschlagen, es dort zu inkludieren, wo es wirklich gebraucht wird.
-
Das using aus den Headern wegmachen, das ist nix gut. Und dann natürlich in Mastermind.cpp die <iostream> einbinden.