Estoy tratando de usar las funciones de miembros en línea de una clase en particular. Por ejemplo, la declaración de la función y la aplicación sin procesos en línea es como tal:error del enlazador de la función en línea
en el archivo de cabecera:
int GetTplLSize();
en el archivo .cpp:
int NeedleUSsim::GetTplLSize()
{
return sampleDim[1];
}
Por alguna razón, si pongo el " palabra clave "en línea" en cualquiera de la implementación y declaración, así como en ambos lugares, obtengo errores de enlazador como se muestra:
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.
Lo que debe ser necesario para deshacerse de este error (es decir ¿Qué estoy haciendo mal en términos de hacer estas funciones miembros en línea)?
¿Es esta la única manera? (Quiero separar la declaración y la implementación por separado por razones de legibilidad) – stanigator
Básicamente sí. El compilador debe conocer el cuerpo de la función al compilar las llamadas, por lo que el cuerpo debe estar en el archivo de encabezado incluido. Sin embargo, aún podría declarar la función en la declaración de clase y agregar la implementación en un lugar posterior en el archivo de encabezado. – Hans
Ya veo. Supongo que tendré que vivir escribiendo el código de esta manera. Gracias por los consejos. – stanigator