NB Esta no es una pregunta sobre cómo usar las funciones en línea o cómo funcionan, sino por qué se hacen de la forma en que están.
La declaración de una función miembro de clase no necesita definir una función como inline
, es solo la implementación real de la función. Por ejemplo, en el archivo de encabezado:
struct foo{
void bar(); // no need to define this as inline
}
Entonces, ¿por qué la implementación en línea de una función de clases tiene que estar en el archivo de encabezado? ¿Por qué no puedo poner la función en línea en el .cpp
archivo? Si intentara poner la definición en línea en el .cpp
archivo, obtendría un error en las líneas de:
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
aparece en una definición pero no en una declaración previa y viceversa . Si es así, esto puede ayudar: stackoverflow.com/questions/4924912/…