Estoy haciendo un pequeño juego y quiero almacenar puntuaciones altas. Hice una clase Highscore en la parte superior del archivo de boceto, así:
class Highscore {
public:
String name;
int score;
String toString() {
return this->name + " - " + (String)score;
}
Highscore(String name, int score) {
this->name = name;
this->score = score;
}
};
setup() { // etc
Ahora. Cerca de la parte inferior del boceto, tengo una función que quiero tomar un objeto Highscore como parámetro, pero el compilador no me lo permite. Ejemplo:
void writeHighscore(Highscore hs) {
File f = SD.open("high.txt", FILE_WRITE);
// Do stuff
El error de compilación es el siguiente:
sketch.ino: 19: 21: error: variable o campo 'writeHighscore' declarado vacío
sketch.ino: 19: 21: error: 'Highscore' no se declaró en este ámbito
sketch.ino: En la función 'void setup ()':
sketch.ino: 64: 20: error: 'writeHighscore' no se declaró en este ámbito
Después de cambiar el tipo de parámetro a String, int o lo que sea, todos los errores desaparecen. Puedo crear Highscore-objetos DENTRO de la writeHighscore()
función, pero ¿cómo puedo pasarle objetos?
Edición 1 - Creación de objetos
Highscore hs = Highscore("John", 975);
Serial.println(hs.toString()); // Prints "John - 975" as expected
writeHighscore(hs); // Error
&hs
enfoque antes de escribir la publicación, así como pasar el puntero writeHighscore(&hs)
-> void writeHighscore(Highscore *hs)
pero fue en vano.