inlinefunktion -> fehlermeldung
-
Hallo Leute,
Ich bitte um Eure Hilfe zu folgender Situation:
- Ich habe eine Klasse in classe.h
- deren funktionen in classe.c
- sowie eine main.cAlles funktionierte Super, bis ich beschloss die GetMethoden mit "inline" zu bezeichnen. Da kammen linkerfehler. Daraufhin hab ich die inline getMethoden auch in classe.h ausgelagert. Auch dies hat nix gebracht

Das ganze teste ich unter Dev-CppWo steckt der Fehler?
Für Eure Antwort wäre ich Euch sehr dankbar

Gruss
-
Hallo,
du darfst inline Funktionen nicht auslagern, wenn sie auch von anderen Übersetzungseinheiten benutzt werden.
Schreib die inline Funktionen entweder direkt in den Header:struct Foo { inline void bar() { //mach was } };oder du machst sie eben nicht inline.
Gab erst gestern einen ausführlichen Thread zu dem Thema...
MfG
GPC
-
Vielen Dank für Die schnelle Antwort
Ich hab den thread gefunden. Daraus entnehme ich, dass solche strukturierung richtig sein sollte:/* CTest.h */ #ifndef CTEST_H #define CTEST_H class CTest { private: ... int zahl; public: ... inline int GetIrgendwas(); }; inline int CTest::GetIrgendwas() { return(this->zahl); } #endif /* CTEST_H */Leider kommt nach wie vor die meldung vom linker:
[linker error] Undefined reference to CTest:GetIrgendwas()Ich hab auch schon einige andere combinationen versucht. Alles ohne Erfolg

Gruss
-
/* CTest.h */ #ifndef CTEST_H #define CTEST_H class CTest { //... int zahl; public: //... inline int GetIrgendwas() const { return this->zahl; } }; #endif /* CTEST_H */So müsste es eigentlich klappen.
-
Was du da zeigst sollte funktionieren.
Mit VC hab ich schon öfter probleme gahabt wenn ich eine funktion auf inline umgestellt habe. Grund war dass manche module noch die nicht inline-versionen verwendet hatten.
Abhilfe -> Rebuild all
Kurt
-
ZuK schrieb:
Was du da zeigst sollte funktionieren.
Mit VC hab ich schon öfter probleme gahabt wenn ich eine funktion auf inline umgestellt habe. Grund war dass manche module noch die nicht inline-versionen verwendet hatten.
Abhilfe -> Rebuild all
KurtJa DAS WAR ES

Jetzt gehts
Vielen Dank Euch beiden für die umfangreiche Hilfe 
Gruss
