¿Qué pasa con mi código de plantilla de C ++ para Arduino?

4

Estoy tratando de implementar una función miembro con plantilla de C ++ en Arduino 0022, pero obtengo 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 (enlazador)   TimeMachineArduino.cpp.o: en la función SimpleScreen::left() :

     

SimpleScreen.h: 85: referencia no definida a void Settings::save<int>(int)

     

SimpleScreen.h: 86: referencia no definida a void Settings::save<double>(double)

     

SimpleScreen.h: 87: referencia no definida a void Settings::save<char>(char)

La función SimpleScreen::left() es donde estoy instanciando implícitamente las funciones de la plantilla (al llamar guardar en un int, double y char).

    
pregunta aaaidan

1 respuesta

5

Debe mover el contenido del archivo .cpp al archivo .h . Separar declaraciones y definiciones no funciona para las plantillas. Consulte el enlace @sharptooth publicado: enlace .

    
respondido por el avakar

Lea otras preguntas en las etiquetas