Uwaga: nie chodzi o to, jak używać funkcji inline ani jak one działają, a raczej o to, dlaczego są robione tak, jak są.
Deklaracja funkcji składowej klasy nie musi definiować funkcji inline
, ponieważ jest to tylko faktyczna implementacja funkcji. Na przykład w pliku nagłówkowym:
struct foo{
void bar(); // no need to define this as inline
}
Dlaczego więc wbudowana implementacja funkcji klas musi znajdować się w pliku nagłówkowym? Dlaczego nie mogę umieścić funkcji wbudowanej w .cpp
pliku? Gdybym próbował umieścić definicję wbudowaną w .cpp
pliku, wystąpiłby błąd w następujący sposób:
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
pojawia się w definicji, ale nie we wcześniejszej deklaracji, a odwrotnie . Jeśli tak, to może pomóc: stackoverflow.com/questions/4924912/…