Fehler: error C2039: 'GetName' : is not a member of 'chrische::EditorStadium'



  • Hallo

    Grundsätzlich, weiß ich eigentlich, was dieser Fehler bedeutet, (zumindest dachte ich das) aber nun bin ich mit meinem Latein am Ende. Wahrscheinlich sehe ich den Wald vor lauter Bäumen nicht aber ich bekomme immer error C2039 bei folgendem Code:

    SetDlgItemText(IDC_STADIONNAME, GetData()->GetClubForEdit()->Stad.GetName());
    

    Editorstadium.h:

    #pragma once
    #include "Stadium.hpp"
    
    namespace chrische
    {
    	class EditorStadium : public chrische::Stadium
    	{
    	public:
    		EditorStadium(void) {};
    		~EditorStadium(void) {};
    		void Save() {};
    		const CString GetName() const;
    		const int GetBuildYear() const;
    		const int GetCapacity() const;
    		const int GetPercentSeat() const;
    		const int GetPercentStand() const;
    		const int GetPercentWithRoof() const;
    		const int GetPercentWithOutRoof() const;
    		const int GetPercentLuxs() const;
    		const CString GetID() const;
    	};
    }
    

    Editorstadium.cpp:

    #include "StdAfx.h"
    #include "EditorStadium.h"
    
    const CString chrische::EditorStadium::GetName() const
    {
    	CString str(this->Name.c_str());
    	return str;
    }
    
    const int chrische::EditorStadium::GetBuildYear() const
    {
    	return this->BuildYear;
    }
    
    const int chrische::EditorStadium::GetCapacity() const
    {
    	return this->Capacity;
    }
    
    const int chrische::EditorStadium::GetPercentSeat() const
    {
    	return this->PercentSeat;
    }
    
    const int chrische::EditorStadium::GetPercentStand() const
    {
    	return this->PercentStand;
    }
    const int chrische::EditorStadium::GetPercentWithRoof() const
    {
    	return this->PercentWithRoof;
    }
    
    const int chrische::EditorStadium::GetPercentWithOutRoof() const
    {
    	return this->PercentWithOutRoof;
    }
    
    const int chrische::EditorStadium::GetPercentLuxs() const
    {
    	return this->PercentLuxs;
    }
    
    const CString chrische::EditorStadium::GetID() const
    {
    	CString str(this->ID.c_str());
    	return str;
    }
    

    Visual Assisit zeigt mir an, dass diese Funktionen vorhanden sind, nur der Compiler schimpft.

    Danke für eure Aufklärung

    chrische



  • eine idee:

    arbeitest du über einen zeiger auf die basisklasse mit abgeleiteten kindobjekt, und ist in der basisklasse Stadium kein GetName() virtuell -mit gleicher signatur! - vorhanden?

    so long



  • Hallo

    EditorStadium ist eine abgeleitete Klasse, aber in der Parentklassen gibt es keine funktionen, sondern nur die Member. Ich weiß allerdings nicgt, ob das deine Frage richtig beantwortet, weil ich sie nicht richtig verstandan habe.

    chrische



  • noch 'ne Idee: hast Du schon ein "Rebuildall" gemacht - die 'precompiled Header' von MS haben manchmal so ihre Tücken.

    Vorschlag: Schreibe doch vor die Zeile in der der Fehler auftritt mal ein

    chrische::EditorStadium malsehn;
        malsehn.GetName();
    

    .. und sag' mal, ob der gleiche Fehler da auch auftritt.

    Hast Du in der cpp-Datei, in der der Fehler auftritt, ein '#include "EditorStadium.h"' gemacht?

    Die Datei 'Editorstadium.cpp' zu posten macht übrigens keinen Sinn. Da liegt der Hund bestimmt nicht begraben.

    Hast Du vielleicht noch eine andere Version der gleichen Klasse, anderes Directory oder alte Datei, wo Du den Namen geändert hast oder sowas?

    Gruß
    Werner



  • Hallo

    Mit Hilfe eurer Anregungen habe ich das Problem nun gelöst: es gab eine editorstadium.hpp und eine editorstadium.h. Die eine Datei war deutlich älter als die andere und bot nur eine eigeschränkte Schnittstelle, in der die gewünschte Funktion halt nicht vorhanden war. Alte Version gelöscht - einige include geändert und es läuft.

    chrische


Anmelden zum Antworten