NB Это не вопрос о том, как использовать встроенные функции или как они работают, а о том, почему они сделаны такими, какие они есть.
Объявление функции-члена класса не должно определять функцию как inline
, это только фактическая реализация функции. Например, в заголовочном файле:
struct foo{
void bar(); // no need to define this as inline
}
Так почему встроенная реализация функции классов должна быть в заголовочном файле? Почему я не могу вставить встроенную функцию в файл .cpp
? Если бы я попытался поместить встроенное определение в файл .cpp
, я получил бы ошибку в виде:
error LNK2019: unresolved external symbol
"public: void __thiscall foo::bar(void)"
([email protected]@@QAEXXZ) referenced in function _main
1>C:\Users\Me\Documents\Visual Studio 2012\Projects\inline\Debug\inline.exe
: fatal error LNK1120: 1 unresolved externals