Sto realizzando un gioco minuscolo e voglio memorizzare punteggi alti. Ho creato una classe Highscore nella parte superiore del file di schizzo, in questo modo:
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
Adesso. Nella parte inferiore dello schizzo, ho una funzione che voglio prendere un oggetto Highscore come parametro, ma il compilatore non me lo consente. Esempio:
void writeHighscore(Highscore hs) {
File f = SD.open("high.txt", FILE_WRITE);
// Do stuff
L'errore di compattazione è il seguente:
sketch.ino: 19: 21: errore: variabile o campo 'writeHighscore' dichiarato vuoto
sketch.ino: 19: 21: errore: 'Highscore' non è stato dichiarato in questo ambito
sketch.ino: nella funzione 'void setup ()':
sketch.ino: 64: 20: errore: 'writeHighscore' non è stato dichiarato in questo ambito
Dopo aver modificato il tipo di parametro in String, int o altro, tutti gli errori scompaiono. Sono in grado di creare oggetti Highscore all'interno della writeHighscore()
funzione, ma come posso passare oggetti ad essa?
Modifica 1 - Creazione dell'oggetto
Highscore hs = Highscore("John", 975);
Serial.println(hs.toString()); // Prints "John - 975" as expected
writeHighscore(hs); // Error
&hs
approccio prima di scrivere il post, oltre a passare il puntatore writeHighscore(&hs)
-> void writeHighscore(Highscore *hs)
ma senza risultati.