NB: Esta não é uma questão sobre como usar funções inline ou como elas funcionam, mas por que são feitas da maneira que são.
A declaração de uma função de membro de classe não precisa definir uma função inline
, pois é apenas a implementação real da função. Por exemplo, no arquivo de cabeçalho:
struct foo{
void bar(); // no need to define this as inline
}
Então, por que a implementação em linha de um aulas funcionam têm de estar no arquivo de cabeçalho? Por que não consigo colocar a função embutida no .cpp
arquivo? Se eu tentasse colocar a definição embutida no .cpp
arquivo, receberia um erro nas linhas de:
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
aparece uma definição, mas não uma declaração anterior vs vice-versa . Em caso afirmativo, isso pode ajudar: stackoverflow.com/questions/4924912/…