Undeclared Identifier(ist aber deklariert)



  • Hi,
    ich habe das Problem, dass meine Implementierung der Klasse nicht den Header zu sehen scheint:

    #ifndef NAHRUNG_H
    #define NAHRUNG_H
    #ifndef SPEISE_H
    #define SPEISE_H
    #ifndef OBST_H
    #define OBST_H
    #ifndef APFEL_H
    #define APFEL_H
    #include <string>
    using namespace std;
    
    	Apfel::Apfel(double gewicht, double preisProKg, string sorte, bool istSuess)
    	{
    		this->gewicht = gewicht;
    		this->preis = preisProKg*gewicht;
    		this->sorte = sorte;
    		this->suess = istSuess;
    	}
    
    	Apfel::string gibSorte()
    	{
    		return this->sorte;
    	}
    
    #endif
    #endif
    #endif
    #endif
    
    class Apfel : public Obst
    {
    private:
    	bool suess;
    	string sorte;
    public:
    	Apfel(double gewichtInKg, double preisProKg, string sorte, bool istSuess);
    	string gibSorte();
    };
    

    Diese Fehlermeldung bekomme ich immer wieder:

    Apfel.cpp:13:2: error: use of undeclared identifier 'Apfel'
            Apfel::Apfel(double gewicht, double preisProKg, string sorte, bo...
            ^
    


  • Dazu musst du den Header includen.



  • Was sollen diese ifndef's? Include-Guards? Guck dir die nochmal an.
    Ich sehe auch nirgens ein '#include "Apfel.h".



  • Danke für die Antworten.

    Jockelx schrieb:

    Was sollen diese ifndef's? Include-Guards? Guck dir die nochmal an.
    Ich sehe auch nirgens ein '#include "Apfel.h".

    Ich hatte die Idee, da ich sehr viele Header habe, dass der Guard prüft, ob der jeweilige Header bereits included ist und wenn nicht soll er ihn includen. Inwiefern muss ich meinen Code modifizieren?



  • #ifndef APFEL_H
    #define APFEL_H
    ...
    class Apfel { .... };
    ...
    ...
    #endif
    


  • C++Ueber schrieb:

    Danke für die Antworten.

    Jockelx schrieb:

    Was sollen diese ifndef's? Include-Guards? Guck dir die nochmal an.
    Ich sehe auch nirgens ein '#include "Apfel.h".

    Ich hatte die Idee, da ich sehr viele Header habe, dass der Guard prüft, ob der jeweilige Header bereits included ist und wenn nicht soll er ihn includen. Inwiefern muss ich meinen Code modifizieren?

    Das macht jeder Header für sich, der wird ja nicht nur in eine Datei eingebunden. (Bei größeren Projekten jedenfalls)


Log in to reply