NB Ini bukan pertanyaan tentang bagaimana menggunakan fungsi sebaris atau bagaimana mereka bekerja, lebih banyak mengapa mereka dilakukan sebagaimana adanya.
Deklarasi fungsi anggota kelas tidak perlu mendefinisikan fungsi inline
, ini hanya implementasi sebenarnya dari fungsi tersebut. Misalnya, di file header:
struct foo{
void bar(); // no need to define this as inline
}
Jadi mengapa implementasi inline dari fungsi kelas harus berada di file header? Mengapa saya tidak bisa meletakkan fungsi sebaris di .cpp
file? Jika saya mencoba meletakkan definisi sebaris di .cpp
file, saya akan mendapatkan kesalahan di sepanjang baris:
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
muncul pada definisi tetapi bukan deklarasi sebelumnya vs sebaliknya . Jika demikian, ini dapat membantu: stackoverflow.com/questions/4924912/…