Überladene Funktion
-
Hallo,
ich habe folgendes Problem.Ich habe eine Klasse Fsm, in der Methode:
Data* importData();
Data* Fsm:: importData() { Data* data; data = m_state->import(*this); // m_state pointer der Klasse State return data; }und eine klasse State mit überladene Methode
virtual Data* import(Fsm&fsm);
die vererbte Klasse von der State:
Data* Import::import(Fsm&fsm) { ...... }Als Fehler habe ich C2556, C2371 Neuedefinition unterschiedliche Basistypen
Data*...importData(void): Überladene Funktion unterscheidet sich nur hinsichtlich des Rückgabetyps von ...importData(void)Wie ich verstehe hängt es mit dem Namen der Funktion zusammen, Rückgabeparameter ist überal gleich. Könntet ihr mir bitte helfen?
-
poste bitte mal die Header von FSM. Du scheinst die Methode "importData" überladen zu haben, wobei du lediglich unterschiedliche Rückgabetypen hast. Das geht so nicht und steht auch so in der Fehlermeldung. Also zeig bitte den Header, dann können wir dir das konkret erklären.
-
In Fsm.h
public: Data* importData(); .....es gibt keine weitere importData()-Methode.
-
Die Fehlermeldung hat nichts (oder nicht viel) mit dem von dir geposteten Code zu tun. Es geht hier um die Funktion importData, und zwar nur um den Rückgabetypen. Die Funktion import ist dabei völlig irrelevant.
Was du uns gezeigt hast:
Data* Fsm:: importData() {/* ... */ }Hier (d.h. in der Definition, vermutlich in der fsm.cpp) ist der Rückgabetyp Data*.
In der Deklaration der Methode (vermutlich in der Defitinion der Klasse FSM, vermutlich in fsm.h) scheint der Fehlermeldung nach zu urteilen der Rückgabetyp ein anderer zu sein. Vermutlich.Ich schreibe hier dauernd vermutlich, weil ich bei dem wenigen Code, den du gepostet hast, nur großzügig raten kann, mehr nicht. Sebst die Fehlermeldung hast du verstümmelt, indem du an Stelle des Klassennamens nur Punkte stehen hast.
Mit den paar Infos die du geliefert hast kann dir nicht weiter geholfen werden. Siehe auch Link in meiner Signatur.
/edit: immerhin hast du jetzt eine weitere Zeile gepostet, aus der sich aber kein Fehler erkennen lässt. Versuchs mal mit einem minimalen, aber kompletten Codebeispiel, das bis auf den besagten Fehler übersetzbar ist.
-
koschka schrieb:
es gibt keine weitere importData()-Methode.
doch, die gibt es irgendwo. Ist die Klasse FSM eventuell geerbt?
Bitte poste nochmal die *komplette* Fehlermeldung (also mit dem Klassennamen).
-
das Problem habe ich gefunden,
in der Header Datei musste ich explizit den relativen Pfad eingeben zu der Rückgabeklasse.
-
schön, dass du den Fehler gefunden hast. Das hört sich aber immer noch sehr seltsam an...
-
namespace pfad musste ich zur Klasse eingeben.