Pregunta

he quitado algunas funciones de un archivo fuente con otra ya que quiero utilizarlos también en otros archivos. La estructura actual es la siguiente

utils/extFuncs.h

#ifndef _extFuncs_h
#define _extFuncs_h
inline int someFunction (float v);
#endif

utils/extFuncs.cpp

#include "utils/extFuncs.h"
inline int someFunction (float v) {
    return 42;
}

foo/bar.h

#ifndef _bar_h
#define _bar_h
#include "utils/extFuncs.h"
class Bar {
public:
    Bar (float x);
};
#endif

foo/bar.cpp

#include "foo/bar.h"
Bar::Bar (float x) {
    int y = someFunction(x);
}

El problema es que cuando intento compilar esto, el enlazador se queja y dice que el someFunction símbolo no puede resolverse.

¿Fue útil?

Solución

someFunction se declara inline, por lo que debe se define en el archivo de cabecera:

utils/extFuncs.h

#ifndef _extFuncs_h
#define _extFuncs_h
inline int someFunction (float v)
{
    return 42;
}
#endif

Otros consejos

¿Usted ha intentado añadir la extFunction.h y extFunction.cpp al espacio de trabajo del proyecto?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top