Estoy tratando de implementar una función de miembro con plantilla de C ++ en Arduino 0022, pero recibo un error en el código que me parece correcto.
// in Settings.h
template <class T> void save( T variable );
// in Settings.cpp
template <class T> void Settings::save( T variable ) {
Serial.println("Want to save a variable of size " + String( sizeof(T) ) );
};
// salida del compilador (vinculador) TimeMachineArduino.cpp.o: En función
SimpleScreen::left()
:SimpleScreen.h:85: referencia indefinida a
void Settings::save<int>(int)
SimpleScreen.h:86: referencia indefinida a
void Settings::save<double>(double)
SimpleScreen.h:87: referencia indefinida a
void Settings::save<char>(char)
La SimpleScreen::left()
función es donde estoy instanciando implícitamente las funciones de la plantilla (llamando a save en un int, double y char).
Debe mover el contenido del .cpp
archivo al .h
archivo. La separación de declaraciones y definiciones no funciona para las plantillas. Vea el enlace @sharptooth publicado: https://stackoverflow.com/q/648900 .
diente filoso