C++ Fehlermeldungen
-
Hi Leute,
was bedeuten folgende Fehlermeldungen:
error C2556: 'int __thiscall LanguageFile::getMsgid(int)' : overloaded function differs only by return type from 'char *__thiscall LanguageFile::getMsgid(int) d:\test1\languagefile.h(16) : see declaration of 'getMsgid'
error C2040: 'getMsgid' : 'int (int)' differs in levels of indirection from 'char *(int)'
Danke für Eure Hilfe.
xthing
-
Ganz einfach: Der Rückgabetyp einer Funktion wird bei der Überladung nicht berücksichtigt und deshalb kann der Compiler die Funktionen "char* getMsgid(int)" und "int getMsgid(int)" nicht unterscheiden.
-
Das bedeutet das eine überladene Funktion sich nicht nur in den Rückgabewerten unterscheiden darf...
Dein Compiler kann ja dann nicht wissen, welche er auswählen soll.
Du musst mindestens den Typ oder die Anzahl der Parameter ändern.Ändere doch die zweite Funktion in char* getMsgTxt(int id);
Aber sonen Rückgabewert ist eh Problematisch.Dann lieber const char*. Kommt auch drauf an wo die Zeichkette liegt die du returnen willst...#
Edit:
CSToll wieder mal schneller, ich sollte in Zukunft nicht soviel schreiben 
-
@Freak_Coder: Danke für Deine Antwort. Aber ich habe die Funktion nicht überladen. Es gibt keine weitere Funktion mit den Namen getMsgid. Deswegen kommen mir diese Fehlermeldungen seltsam vor. Weisst Du Rat?
Gruß
xthing
-
Kann sein, daß DU sie nicht überladen hast, aber diese offenbar hast du einen Header eingebunden, in dem es diese Funktion schonmal gab.
(klick mal doppelt auf die "see declaration" Meldung, dann solltest du eigentlich bei der Originalversion landen)
-
CStoll schrieb:
Kann sein, daß DU sie nicht überladen hast, aber diese offenbar hast du einen Header eingebunden, in dem es diese Funktion schonmal gab.
dann müßte die ganze klasse anders deklariert worden sein. meine vermutung wäre, dass möglicherweise ein schreibfehler bei der implementierung vorliegt, d.h. die funktion wurde als
char* getMsgid(int)deklariert aber dann versehentlich als
int LanguageFile::getMsgid(int)implementiert (oder vielleicht ganz ohne returntyp und der compiler ergänzte int implizit - auch wenn das nat. falsch ist) - jedenfalls ist mir das gelegentlich passiert und der compiler beschwerte sich dann immer mit irgendwas über overloads.
-
Wäre natürlich alles viel einfacher, wenn wir was code zu Gesicht bekämen
