Belirli bir sınıfın satır içi üye işlevlerini kullanmaya çalışıyorum. Ben "koyarsanızsatır içi işlev bağlayıcı hatası
int NeedleUSsim::GetTplLSize()
{
return sampleDim[1];
}
Nedense:
int GetTplLSize();
.Cpp dosyasında: başlık dosyasına
: gibi Örneğin inlining olmadan fonksiyon beyanı ve uygulamasıdır inline "anahtar kelimesi, uygulama ve bildirimin yanı sıra, her iki yerde de gösterildiği gibi, bağlayıcı hataları alırım:
Creating library C:\DOCUME~1\STANLEY\LOCALS~1\TEMP\MEX_HN~1\templib.x and object C:\DOCUME~1\STANLEY\LOCALS~1\TEMP\MEX_HN~1\templib.exp mexfunction.obj : error LNK2019: unresolved external symbol "public: int __thiscall NeedleUSsim::GetTplLSize(void)" ([email protected]@@QAEHXZ) referenced in function _mexFunction mexfunction.mexw32 : fatal error LNK1120: 1 unresolved externals C:\PROGRA~1\MATLAB\R2008B\BIN\MEX.PL: Error: Link of 'mexfunction.mexw32' failed.
Bu hatadan kurtulmak için ne olması gerekir (ör. Bu satır içi üye işlevleri yapmak açısından ne yapıyorum?)?
Tek yol bu mu? (Ben okunabilirlik nedenleriyle bildirimi ve uygulamayı ayrı ayrı ayırmak istiyorum) – stanigator
Temel olarak evet. Derleyici, çağrılar derlenirken, fonksiyonun gövdesini bilmek zorundadır, bu yüzden gövde, dahil edilen başlık dosyasında olmalıdır. Bununla birlikte, yine de, yalnızca sınıf beyanındaki işlevi bildirebilir ve uygulamayı, başlık dosyasında daha sonraki bir yere ekleyebilirsiniz. – Hans
Anladım. Sanırım kodu bu şekilde yazarak yaşamak zorundayım. Tavsiyeler için teşekkürler. – stanigator