Hinweis: Hier geht es nicht darum, wie Inline-Funktionen verwendet werden oder wie sie funktionieren, sondern darum, warum sie so ausgeführt werden, wie sie sind.
Die Deklaration einer Klassenmitgliedsfunktion muss keine Funktion als definieren inline
, sondern ist nur die tatsächliche Implementierung der Funktion. Zum Beispiel in der Header-Datei:
struct foo{
void bar(); // no need to define this as inline
}
Warum also die Inline - Implementierung eines Klassen funktionieren müssen , um in der Header - Datei? Warum kann ich die Inline-Funktion nicht in die .cpp
Datei einfügen? Wenn ich versuchen würde, die Inline-Definition in die .cpp
Datei einzufügen, würde ich einen Fehler in der Art von: erhalten.
error LNK2019: unresolved external symbol
"public: void __thiscall foo::bar(void)"
(?bar@foo@@QAEXXZ) referenced in function _main
1>C:\Users\Me\Documents\Visual Studio 2012\Projects\inline\Debug\inline.exe
: fatal error LNK1120: 1 unresolved externals
inline
eine Definition angezeigt wird, aber keine vorherige Erklärung, und umgekehrt . Wenn ja, kann dies helfen: stackoverflow.com/questions/4924912/…