Probleme mit cout/cin



  • Hallo

    Ich habe ein kleines Konsolen Programm geschrieben um den Umgang mit Klassen zu üben. Soweit scheint es auch zu funktionieren nur werden komischer Weise ein cout ein endl und ein cin im Code als 'undeclared identifer' abgetan. Ich habe keine Idee mehr woran das liegen könnte, da alle anderen couts, cins im Code richtig erkannt werden. Die 3 nicht erkannten liegen auch nicht in einer Zeile oder einer Funktion. Ich hoffe jemand weiß hierfür eine Lösung ich kann auch gerne den gesamten Quellcode posten, da es aber schon etwas ist wollte ich das erstmal weglassen und nur den Fehlerteil posten.
    Danke für alle Antworten

    Mfg
    Auron

    [cpp]
    void Hund::give_pos()
    {
    cout<<" Der Hund befindet sich an Position: "<<endl;//cout endl
    cout<<"X: "<<*px<<endl;
    cout<<"Y: "<<*py<<endl;
    }
    void Hund::name_dog()
    {
    cout<<"Geben sie ihrem Hund bitte einen Namen"<<endl;
    cin>>Hund::name; //cin
    cout<<endl;
    cout<<"Und eine Rasse: "<<endl;
    cin>>Hund::art;
    cout<<endl;
    }
    [/cpp]



  • Hallo

    weil das fehlt :

    #include <iostream>
    using namespace std;
    

    bis bald
    akari



  • Nein, das habe ich ja weiter oben. Ich sagte ja das das nur ein Ausschnitt eines Quellcodes ist. Würde auch nit wirklich Sinn machen wenn das das ganze Projekt wäre 🙄



  • Hallo

    nur weil du irgendwo das deklariest hast, heißt das noch lange nicht, das es auch an dieser Stelle gilt.
    Das es pro Funktion nur je einmal gemeldet wird, liegt daran das gleichartige Fehlermeldung nicht wiederholt werden.

    Probier es doch einfach mal aus, genau vor die beiden Funktionen das noch einzufügen.

    Sollte es doch nicht funktionieren, hast du einen Fehler noch über den hier geposteten Code.

    bis bald
    akari



  • Danke erstmal für deine Antworten.
    Habe vor jeder Funktion noch mal
    include und namespace gemacht und die Fehler sind jetzt weg.
    Allerdings beschwert er sich jetzt wie folgt:

    error C2679: binary '<' : no operator found which takes a right-hand operand of type 'overloaded-function' (or there is no acceptable conversion)
    could be 'built-in C++ operator<(void *, void *)'
    while trying to match the argument list '(std::basic_ostream<_Elem,_Traits>, overloaded-function)'
    with
    [
    _Elem=char,
    _Traits=std::char_traits<char>
    ]

    Dieser Fehler tritt in der main-Funktion und nicht mehr in den Funktionen von eben auf. Habe auch hier noch mal include und namespace eingefügt aber leider bleibt der Fehler.
    Vielleicht eine Idee warum?

    Mfg
    Auron



  • Hallo

    Habe vor jeder Funktion noch mal
    include und namespace gemacht und die Fehler sind jetzt weg.

    Eigentlich solltest du das nur zum testen machen. Im fertigen Programm sollten solche Anweisungen am besten genau einmal für jede Stelle wo sie gebraucht werden vorhanden sein.
    Vor allem das using ist kritisch, nimm lieber std:: vor jeder einzelnen benötigten Stelle.

    Dieser Fehler tritt in der main-Funktion und nicht mehr in den Funktionen von eben auf. Habe auch hier noch mal include und namespace eingefügt aber leider bleibt der Fehler.
    Vielleicht eine Idee warum?

    Du versuchts den <-Operator auf zwei Pointer anzuwenden, was der Compiler nicht anwenden kann. Was falsch ist kann ich mangels Code auch nicht sagen.
    Ich vermute mal du wolltest den << haben.

    bis bald
    akari



  • Also ich poste jetzt einfach mal den kompletten Code.
    Einwas noch voraus: Bitte den Code nicht direkt in der Luft zerreissen. Ich bin noch nicht so fit und er ist dementsprechend schlecht nehme ich.

    #include <iostream>
    #include "stdafx.h"
    
    using namespace std;
    
    class Hund
    {
    public:
    	void move_dog(int x, int y);
    	void name_dog();
    	void give_pos();
    	void show_dog();
    private:
    	int x ;
    	int y ;
    	int * px ;
    	int * py ;
    	char name[20];
    	char art[20];
    };
    
    void Hund::move_dog(int x,int y)
    	 {		 
    		 *px=x;
    		 *py=y;
    	 }
    
    #include <iostream>
    using namespace std;
    
    void Hund::give_pos()
    	 {
    		 cout<<" Der Hund befindet sich an Position: "<<endl;
    		 cout<<"X: "<<*px<<endl;
    		 cout<<"Y: "<<*py<<endl;
    	 }
    
    #include <iostream>
    using namespace std;
    
    void Hund::name_dog()
    	 {
    		 cout<<"Geben sie ihrem Hund bitte einen Namen"<<endl;
    		 cin>>Hund::name;
    		 cout<<endl;
    		 cout<<"Und eine Rasse: "<<endl;
    		 cin>>Hund::art;
    		 cout<<endl;
    	 }
    void Hund::show_dog()
    	 {
    		 cout<<"Ihr Hund heißt "<<name<<" und ist "<<art<<endl;
    	 }
    
    #include <iostream>
    using namespace std;
    
    	 int main()
    	 {
    		 Hund dog;
    
    		 int status=0;
    		 #include <iostream>
    using namespace std;
    
    		 do{
    			 cout<<"Menu"<<endl;
    			 cout<<"----"<<endl;
    			 cout<<"1-Neuer Hund"<endl;
    			 cout<<"2-Hund anzeigen"<<endl;
    			 cout<<"3-Hund bewegen"<<endl;
    			 cout<<"4-Position anzeigen"<<endl;
    			 cout<<"5-Beenden"<<endl;
    			 cout<<endl;
    
    			 cin>>status;
    			 cout<<endl;
    
    			 switch(status)
    			 {
    			 case(1):
    				 {					 
    					 dog.name_dog();
    				 }break;
    			 case(2):
    				 {
    					 dog.show_dog();
    				 }break;
    			 case(3):
    				 {
    					 dog.give_pos();
    					 cout<<"Wo möchten sie ihren Hund hinbewegen?"<<endl;
    
    					 int x=0;
    					 int y=0;
    
    					 cout<<"X: ";
    					 cin>>x;
    					 cout<<endl;
    
    					 cout<<"Y: ";
    					 cin>>y;
    					 cout<<endl;
    
    					 dog.move_dog(x,y);
    
    					 dog.give_pos();
    				 }break;
    			 case(4):
    				 {
    					 dog.give_pos();
    				 }break;
    			 default:
    				 {
    					 cout<<"Ungültige Eingabe"<<endl;
    				 }break;
    			 }
    		 }while(status!=5);
    
    		 return 0;
    	 }
    


  • Hallo

    cout<<"1-Neuer Hund"<endl; // wie gesagt : < ist falsch, << solls sein
    
    #include <iostream>
    #include "stdafx.h"
    using namespace std;
    

    ganz oben reicht vollkommen aus. alle weiter unten kommenden Zeilen mit diesem Inhalt können (und sollten) entfernt werden.

    bis bald
    akari


Anmelden zum Antworten