NB Questa non è una domanda su come usare le funzioni inline o su come funzionano, ma piuttosto sul motivo per cui sono fatte come sono.
La dichiarazione di una funzione membro di una classe non ha bisogno di definire una funzione in inlinequanto è solo l'effettiva implementazione della funzione. Ad esempio, nel file di intestazione:
struct foo{
void bar(); // no need to define this as inline
}
Allora perché l'implementazione inline di una funzione di classi deve essere nel file di intestazione? Perché non posso inserire la funzione inline nel .cppfile? Se dovessi provare a inserire la definizione inline nel .cppfile, riceverei un errore sulla falsariga di:
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
inlineappare su una definizione ma non su una dichiarazione preventiva e viceversa . Se è così, questo può aiutare: stackoverflow.com/questions/4924912/…