NB This is not a question about how to use inline functions or how they work, more why they are done the way they are.
The declaration of a class member function does not need to define a function as inline
, it is only the actual implementation of the function. For example, in the header file:
struct foo {
void bar(); // no need to define this as inline
};
So why does the inline implementation of a classes function have to be in the header file? Why can't I put the inline function the .cpp
file? If I were to try to put the inline definition in the .cpp
file I would get an error along the lines of:
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
appears on a definition but not a prior declaration vs vice versa. If so, this may help: #4925412 – Duron