Frage zu static Funktion[gelöst]
-
Guten Morgen allerseits,
ich hätte eine Frage zu einer static Funktion von mir.
Im Header ist sie mit:
static void Import(void);in Public drinnen und ich möchte jetzt noch Variablen im Header haben die in der Funktion dann befühlt werden nur krieg ich dann immer Fehlermeldung.
Application error LNK2001: Nichtaufgelöstes externes Symbol "protected: static double ImportExport::dVersion" (?dVersion@ImportExport@@1NA)
und
Application fatal error LNK1120: 1 unaufgelöste externe Verweise
So würd ich die dVersion in der Cpp einbauen wollen.
if(strLine.startsWith("Version=")) { QString strText = strLine.mid(8); dVersion= strText.toDouble(); }in der Header Datei ist sie so drin:
static double dVersion;und wenn ich das static weglasse dann bekomme ich diese Fehlermeldung:
d:\ResearchLab\ParameterTool\ImportExport.cpp(51): error C2597: Ungültiger Verweis auf nicht-statischen Member 'ImportExport::dVersion'
Hoffe da kann mir jemand weiterhelfen...
Gruß
GT
-
Hi,
Es reicht nicht, wenn Du im Header Funktionsdeklarationen änderst, solange sie in der Lib anders implementiert sind.
In Deinem Fall kommt es zu Linkfehlern, weil der Compiler aus static-Funktionen andere Namen "zusammenbaut" als aus nicht-static-Funktionen (auch, wenn sie denselben Namen haben).
Entweder musst Du also die Lib selbst auch neu kompilieren (wenn Du die Sourcen dafür hast) ... oder Dein fachliches Problem anders lösen.Gruß,
Simon2.
-
Die Lösung ist das ich die Variable erst noch erstellen muss. Nicht nur im Header definiern.
Also für dVersion:
Brauche ich in der Headerdatei
static double dVersionin der Cpp
double ImportExport::dVersion; //Beim Includen und ImportExport::dVersion "was ich damit machen will" // In der Funktion.Vielen dank für deine mühe
-
GT schrieb:
...Vielen dank für deine mühe
... und sei sie noch so vergeblich gewesen.

Danke für Deine Dankbarkeit - ich hatte Dein Problem wohl komplett missverstanden.
Schön, dass Du trotzdem eine Lösung gefunden hast.
Gruß,
Simon2.