unbekannte Fehlermeldung



  • danielgott schrieb:

    hätte aber noch eine Frage: warum kommt genau bei allen int-Funktionen, die ich nach "zeichenfunktionen.cpp" auslagere, die Fehlermeldung "Bezeichner wurde nicht gefunden"???



  • Wärst du so freundlich mal den Code hier her zu kopieren?
    Du scheinst irgendwas bei der Modulzerlegung falsch gemacht haben; ich kann mir aber auf deine Beiträge bisher keinen Reim machen was. Und meine Kristallkugel is schonwieder kaputt und so kann ich leider nicht sehen, wie dein Quellcode aussieht.



  • Ich hab die 3 Dateien mal upgeloedet, wobei die int-Funktionen, die nicht funktionieren, hier nicht ausgelagert sind,sondern direkt in der Datei "Zwölferspiel.cpp" stehen, weshalb beim Debuggen auch keine Fehlermeldung kommt
    http://uploaded.to/file/v76dwvwh



  • danielgott schrieb:

    Ich hab die 3 Dateien mal upgeloedet, wobei die int-Funktionen, die nicht funktionieren, hier nicht ausgelagert sind,sondern direkt in der Datei "Zwölferspiel.cpp" stehen, weshalb beim Debuggen auch keine Fehlermeldung kommt

    Wenn die Fehlermeldung nicht komm bringt das nicht viel, den Code hochzuladen. Bitte poste hier deinen Code, und zwar aufs wesentliche reduziert, aber trotzdem noch compilierbar und so, dass der Fehler reproduziert werden kann. Alles Andere hat wenig Sinn.



  • Keine Ahnung was du compilierst 😕

    Dein verlinkter Quelltext gibt ganz klar Fehlermeldungen aus 👍
    Aber du solltest die hier komplett zeigen ⚠

    Dann wird das auch was mit der Diagnose.

    Fehlermeldung eines anderen Compilers:
    ..\zeichenfunktionen.cpp|4|Error: undefined identifier 'Zeichenbrett'|

    Also kennt dein Compiler den Begriff 'Zeichenbrett' nicht.

    Bei der Header-Datei würde ich noch etwas einbauen, damit die nur einmal im Projekt geladen wird.

    MfG f.-th.



  • Nachtrag hab noch mal ein wenig im Netz gestöbert.
    Die Dateien die du hier verlinkst sind nur Teile eines grösseren Projektes aus dem Buch. Deshalb muss die von mir gezeigte Fehlermeldung nicht zutreffen!

    Ich weiss jetzt nicht ob das dich betrifft. Bei einer der Buchauflagen ist es zu einer Verwechselung von Dateiversionen gekommen und anderen Kleinigkeiten.

    Korrekturen siehe auf der Seite vom Buchautoren.

    MfG f.-th.



  • Ja das mit dem Zeichenbrett liegt daran, dass man eigentlich noch eine zusätzliche Datei einbiden mus,, sry hab ich vergessen, und das mit dem Quelltext wird schwer weil ich nicht weis wo iwas falsch sein könnte, da es ja ohne Auslagerung funktioniert, aber ich versuchs mal:

    Also in der Auslagerungsdatei steht u.a.:

    #include "zeichenfunktionen.h"
    int Mensch(int steine)
     {
    	 int anz;
    	 do
    	 {
    	   std::cout <<"Wie viele Steine möchtest du setzen???";
    	   std::cin>>anz;
    	 }while(!(anz==1||(anz==2&&steine<11)));
    	 return(anz);
     }
    
     int Computer(int steine)
     {
    	 if(steine==11)
    	 {
    		 return 1;
    	 }
    	 if(steine==10)
    	 {
    		 return 2;
    	 }
    	 return Mathemahotep::ErmittleZufallszahl(1,2);
     }
      int ComputerStark(int steine)
     {
    	 if(steine==2 || steine==5 || steine==8 || steine==11)
    	 {
    		 return 1;
    	 }
    	 if(steine==1 || steine==4 || steine==7 || steine==10)
    	 {
    		 return 2;
    	 }
    	 return Mathemahotep::ErmittleZufallszahl(1,2);
     }
    

    und in der Headerdatei:

    #include <iostream>
    using namespace std;
    

    int Mensch(int steine);
    int Computer(int steine);
    int ComputerStark(int steine);

    und in der Hauptdatei:

    int main()
    {
      Zeichenbrett::Oeffnen(700,200);
      Mathemahotep::HilfMir();
      int Schwierigkeitsgrad;
      cout<<"Wählen Sie den Schwierigkeitsgrad :"<<endl;
      cout<<"1=Einfach"<<endl;
      cout<<"2=Schwierig"<<endl;
      cin>>Schwierigkeitsgrad;
      int Beginn=Mathemahotep::ErmittleZufallszahl(1,2); 
      bool computer;
      if(Beginn==1)
      {
    	 computer=true;
      }
      else
      {
    	  computer=false;
      }
    
      int steine=0;
      do
      {
    	  ZeichneSpielfeld(steine);
    	  Zeichenbrett::FensterNachVorne();
    	  if(computer==true)
    	  {
    		  int anz;
    		  if(Schwierigkeitsgrad==1)
    		  {
    		   anz=Computer(steine);
    		  }
    		  else
    		  {
    			anz=ComputerStark(steine);
    		  }
    		  cout<<"Der Computer spielt ";
    		  cout <<anz<<" Stein(e)"<<endl;
    		  steine=steine+anz;
    	  }
    	  else
    	  {
    		  steine=steine+Mensch(steine);
    			  }
    			  if(steine<12)
    			  {
    				  computer=!computer;
    			  }
      }while(steine<12);
    
      ZeichneSpielfeld(steine);
    
      if(computer==true)
      {
    	  cout<<"Leider verloren"<<endl;
    	  Zeichenbrett::ZeichneText(225,140,"Gewinner:Computer",20);
      }
      else
      {
    	  cout<<"Du hast gewonnen!"<<endl;
    	  Zeichenbrett::ZeichneText(225,140,"Gewinner:DU!",20);
    	  Zeichenbrett::FensterNachVorne();
      }  
      cin.get();
    }
    


  • [quote="danielgott"]

    und in der Headerdatei:

    #include <iostream>
    using namespace std;
    int Mensch(int steine);
    int Computer(int steine);
    int ComputerStark(int steine);
    

    Soll deine Headerdatei so ähnlich aussehen?
    Steht da real

    using namespace std;
    

    in der Headerdatei?
    Das ist keine gute Idee.

    Und zu deinen Problemen:
    Da du dich weigerst die Fehlerbeschreibung ausführlich hier darzustellen und der Quelltext auch nicht für uns nachvollziehbar ist, musst du halt selbst sehen wie du klarkommst.
    Dein Compiler sagt dir normalerweise den Dateinamen, die Zeilennummer und die Fehlerbeschreibung. Wenn das bei dir so ist, warum zeigst du das nicht?

    Oder treten noch andere Fehler auf?



  • Ja, die Fehlermeldung lautet (wie bereits mehrmals geschrieben) "Bezeichner wurde nicht gefunden" (und davor halt die jeweilige Funktion), und wie bereits gesagt ich habe keine Ahnung was falsch ist deshalb weis ich auch nicht welcher Teil des Quelltextes da hilfreich ist...



  • Und, wenn du jetzt noch die Fehlermeldung komplett schreibst, bekommen wir eventuell eine Ahnung.

    Wie heisst der Bezeichner, der nicht gefunden wurde? In welcher Datei, in welcher Zeile? Schau in allen Dateien deines Projektes nach ob der Bezeichner da schon beschrieben wurde. Wenn ja, überlege warum dein Compiler nicht das Passende findet.

    Da du immer nur Bruchstücke zeigst wird das nix.

    Die Beispiele zu reproduzieren der Fehler sollen zwar kurz sein, aber nicht zusammen gestückelt.

    Auf der Seite des Autors hast du schon nachgeschaut und das in deinem Projekt entsprechend angepasst 😕



  • Das mag vielleicht etwas blöd klingen, aber die Header-Datei hast du schon in der Hauptdatei mit der main() Funktion inkludiert, ja?



  • danielgott schrieb:

    wie bereits gesagt ich habe keine Ahnung was falsch ist deshalb weis ich auch nicht welcher Teil des Quelltextes da hilfreich ist...

    In der Fehlermeldung steht normalerweise, welche Zeile in welcher Datei dem Compiler nicht gefällt. Aber da du dich standhaft weigerst, die Fehlermeldung hier zu posten, kann man dir da auch nicht helfen.

    Zum reduzierten Code:

    1. Such dir Code, von dem du glaubst, dass er mit dem Problem nichts zu tun hat.
    2. Lösche den Code oder ersetze ihn durch dummy-Code (z.B. einlese-Methoden durch feste Werte etc.)
    3. Übersetze das Programm
    4. Wenn du jetzt andere Fehler bekommst, hast du was falsch gemacht
    5. Wenn dein Fehler jetzt verschwunden ist, hast du Code rausgenommen, der den Fehler verursacht (hilft dir vielleicht, den Fehler zu finden)
    6. Wenn dein Fehler der selbe ist wie vorher, gehe zu 1) und reduzier den Code weiter.

    Ist eigentlich keine schwere Sache, nur eben etwas aufwändig.



  • Ja, die Zeichenfunktionen sind inkludiert, und die Fehlermeldung bezieht sich auf die Zeile, wo ich die jeweilige int-Funktion benütze, also beispielsweise:

    anz=Computer(steine);
    

    also liegt der Fehler eindeutig in der Headerdatei oder der C++-Datei, in der ich die Funktionen definiere, da es wenn ich die Funktionen nicht auslagere auch funktioniert, bei allen anderen Funktionen gehts aber auch nur eben bei denen mit dem Typ int nicht...

    hier noch mal der Code der Auslagerungsdatei:

    #include "zeichenfunktionen.h"
    using namespace std;
    
    int Mensch(int steine)
     {
    	 int anz;
    	 do
    	 {
    	   std::cout <<"Wie viele Steine möchtest du setzen???";
    	   std::cin>>anz;
    	 }while(!(anz==1||(anz==2&&steine<11)));
    	 return(anz);
     }
    
     int Computer(int steine)
     {
    	 if(steine==11)
    	 {
    		 return 1;
    	 }
    	 if(steine==10)
    	 {
    		 return 2;
    	 }
    	 return Mathemahotep::ErmittleZufallszahl(1,2);
     }
      int ComputerStark(int steine)
     {
    	 if(steine==2 || steine==5 || steine==8 || steine==11)
    	 {
    		 return 1;
    	 }
    	 if(steine==1 || steine==4 || steine==7 || steine==10)
    	 {
    		 return 2;
    	 }
    	 return Mathemahotep::ErmittleZufallszahl(1,2);
     }
    


  • pumuckl schrieb:

    Aber da du dich standhaft weigerst, die Fehlermeldung hier zu posten, kann man dir da auch nicht helfen.

    Kann man gerne noch ein paarmal wiederholen. Bis du es verstanden hast. Wir haben Zeit...


Anmelden zum Antworten