Я пытаюсь использовать встроенные функции-члены определенного класса. Например, объявление функции и реализация без встраивания как таковые:inline function linker error
в заголовочном файле:
int GetTplLSize();
в файле .cpp:
int NeedleUSsim::GetTplLSize()
{
return sampleDim[1];
}
По какой-то причине, если я поставил " inline "в одном из вариантов реализации и декларации, а также в обоих местах, я получаю ошибки компоновщика, как показано:
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.
Что должно быть, чтобы избавиться от этой ошибки (т. что я делаю неправильно с точки зрения создания этих встроенных функций-членов)?
Это единственный способ? (Я хочу отдельно разделить декларацию и реализацию по соображениям удобочитаемости) – stanigator
В принципе да. Компилятор должен знать тело функции при компиляции вызовов к ней, поэтому тело должно находиться во включенном файле заголовка. Однако вы все равно можете просто объявить функцию в объявлении класса и добавить реализацию в более позднем месте в файле заголовка. – Hans
Я вижу. Наверное, мне просто нужно было бы написать код таким образом. Спасибо за советы. – stanigator