Methode angeblich nicht in Klasse deklariert
-
Ich bekomme Quelltext nicht compiliert, und zwar gibt der Compiler (MinGW) immer folgende Meldung aus:
MyClass.cpp:68: error: no `std::string MyClass::GetClassNameA() const' member function declared in class `MyClass'
Diese Methode liefert eigentlich nur einen string zurück, welcher den Klassennamen enthält und ist in der Header und in der cpp vorhanden:
Header: std::string GetClassName() const; CPP: std::string MyClass::GetClassName() const { return(m_className); }Ich weiß auch gar nicht, was das 'A' am Ende der Methode zu suchen hat.
Alles bereinigen und neu erstellen bringt nichts, kommentiere ich die Deklaration sowie die Implementierung aus, dann geht es.Aus diesem Grund hab ich dann eine andere Methode der Klasse genommen, die auch einfach nur einen string zurückgibt, diese kopiert und in GetClassName umbenannt und es taucht der gleiche Fehler auf
Der gesamte Aufbau ist identisch, die sind quasi gleich nur das sie anders heißen und ein anderer string zurückgegeben wird...Weiß jemand, was das sein könnte?
-
GetClassName ist eine globale Funktion in <windows.h>. Eigentlich sind es zwei Funktionen, GetClassNameA und GetClassNameW. Durch ein Makro wird GetClassName auf einen dieser Werte gesetzt. Und das passiert auch mit deinem Code, aber offenbar nur in der Definition.
Du musst entweder auf <windows.h> verzichten oder die Funktion umbenennen.
-
Ich schätze mal, das irgendwo in einer Library ein Makro definiert ist, das GetClassName heißt, und per Compiler-Makrodefine auf GetClassNameA schaltet. Mußt du mal in allen HEader, die du includierst und die wiederrum welche includieren, nach ClassName, Name oder GetClassName suchen.
-
Tja, da soll einer sagen, Makros sind nicht böse...

-
Ja, das ist es gewesen . Danke!