NB Bu, satır içi işlevlerin nasıl kullanılacağı veya nasıl çalıştıkları ile ilgili bir soru değildir, daha çok neden oldukları gibi yapıldıklarıdır.
Bir sınıf üyesi işlevin bildiriminin bir işlevi tanımlaması gerekmez inline, bu yalnızca işlevin gerçek uygulamasıdır. Örneğin, başlık dosyasında:
struct foo{
void bar(); // no need to define this as inline
}
Öyleyse neden bir sınıf işlevinin satır içi uygulaması başlık dosyasında olmak zorunda? Neden satır içi işlevi .cppdosyaya koyamıyorum ? Satır içi tanımı .cppdosyaya koymaya çalışırsam, şu satırlar boyunca bir hata alırdım:
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
inlinebir tanımda göründüğünde, ancak önceki bir beyanda bulunmadığında veya tam tersi durumlarla ilgili sorular soruyor olabilirsiniz . Öyleyse, bu yardımcı olabilir: stackoverflow.com/questions/4924912/…