Ich mache ein winziges Spiel und möchte Highscores speichern. Ich habe oben in der Skizzendatei eine Highscore-Klasse erstellt, wie folgt:
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
Jetzt. Am unteren Rand der Skizze habe ich eine Funktion, die ich als Highscore-Objekt als Parameter verwenden möchte, aber der Compiler lässt mich nicht. Beispiel:
void writeHighscore(Highscore hs) {
File f = SD.open("high.txt", FILE_WRITE);
// Do stuff
Der Komplikationsfehler ist wie folgt:
skizze.ino: 19: 21: fehler: Variable oder feld 'writeHighscore' deklariert void
skizze.ino: 19: 21: fehler: 'highscore' wurde in diesem
bereich nicht deklariert skizze.ino: In der funktion 'void setup ()':
Skizze.ino: 64: 20: Fehler: 'writeHighscore' wurde in diesem Bereich nicht deklariert
Nachdem Sie den Parametertyp in String, int oder was auch immer geändert haben, verschwinden alle Fehler. Ich kann Highscore-Objekte INNERHALB der writeHighscore()
Funktion erstellen , aber wie kann ich Objekte an diese übergeben?
Bearbeiten 1 - Objekterstellung
Highscore hs = Highscore("John", 975);
Serial.println(hs.toString()); // Prints "John - 975" as expected
writeHighscore(hs); // Error
&hs
Ansatz vor dem Schreiben des Beitrags sowie das Übergeben des Zeigers writeHighscore(&hs)
-> void writeHighscore(Highscore *hs)
aber ohne Erfolg.