[Verständnisfrage] Inlining mit Headern
-
Ist es jetzt eigentlich möglich, Inlining in Klassen so zu betreiben, dass ich die Inline-Methode an einer anderen Stelle definieren kann?
Also:
So kann ich ja Inline-Methoden in Klassen machen (bzw. den Vorschlag zum Inlining geben):#include <iostream> class Test { public: void printen() { std:cout << "HALLO!"; } };Aber Folgendes funktioniert NICHT:
// Test.h class Test { public: void printen(); };// Test.cpp #include "Test.h" #include <iostream> inline void Test::printen() { std::cout << "HALLO!"; }Auch funktioniert es nicht, wenn ich bei der Deklaration in der Headerfile ein **extern
**hinzufüge.Gibt es eine Möglichkeit, das Trennen von Header & Klasse zu bewahren und zu inlinen, ohne die printen-Methode direkt im Header definieren zu müssen?
-
C-reator schrieb:
Gibt es eine Möglichkeit, das Trennen von Header & Klasse zu bewahren und zu inlinen, ohne die printen-Methode direkt im Header definieren zu müssen?
Da sieht es schlecht aus. Um sie "inlinen" zu können muss die Definition der Funktion bei deren Anwendung bereits bekannt sein, die Deklaration reicht nicht aus.
D.h. du kannst die Funktionsdefinition zwar außerhalb der Klassendefinition hinschreiben sie muss aber ebenfalls in die Header-Datei.
// Test.h class Test { public: void printen(); }; // das kommt dann auch in Test.h rein inline void Test::printen() { std::cout << "HALLO!"; }