Примітка. Це не питання про те, як використовувати вбудовані функції або як вони працюють, більше чому вони зроблені так, як є.
Декларація функції члена класу не потребує визначення функції як 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)"
(?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
відображаються у визначенні, але не попередня декларація проти навпаки . Якщо це так, це може допомогти: stackoverflow.com/questions/4924912/…