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 inline
quanto è 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 .cpp
file? Se dovessi provare a inserire la definizione inline nel .cpp
file, 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
inline
appare su una definizione ma non su una dichiarazione preventiva e viceversa . Se è così, questo può aiutare: stackoverflow.com/questions/4924912/…