NB Il ne s'agit pas de savoir comment utiliser les fonctions en ligne ou comment elles fonctionnent, mais plutôt pourquoi elles sont faites telles qu'elles sont.
La déclaration d'une fonction membre de classe n'a pas besoin de définir une fonction car inline
il s'agit uniquement de l'implémentation réelle de la fonction. Par exemple, dans le fichier d'en-tête:
struct foo{
void bar(); // no need to define this as inline
}
Alors pourquoi l'implémentation en ligne d'une fonction de classes doit-elle se trouver dans le fichier d'en-tête? Pourquoi ne puis-je pas mettre la fonction en ligne dans le .cpp
fichier? Si je devais essayer de mettre la définition en ligne dans le .cpp
fichier, j'obtiendrais une erreur du type:
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
apparaît sur une définition mais pas sur une déclaration préalable vs vice versa . Si tel est le cas, cela peut aider: stackoverflow.com/questions/4924912/…