Je fais un petit jeu et je veux enregistrer des scores élevés. J'ai créé une classe Highscore en haut du fichier d'esquisse, comme ceci:
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
Maintenant. Près du bas de l'esquisse, j'ai une fonction que je veux prendre un objet Highscore comme paramètre, mais le compilateur ne me le permet pas. Exemple:
void writeHighscore(Highscore hs) {
File f = SD.open("high.txt", FILE_WRITE);
// Do stuff
L'erreur de complation est la suivante:
sketch.ino: 19: 21: erreur: variable ou champ 'writeHighscore' déclaré nul
sketch.ino: 19: 21: erreur: 'Highscore' n'a pas été déclaré dans cette étendue
sketch.ino: Dans la fonction 'void setup ()':
sketch.ino: 64: 20: erreur: 'writeHighscore' n'a pas été déclaré dans cette étendue
Après avoir changé le type de paramètre en String, int ou autre, toutes les erreurs disparaissent. Je peux créer des objets Highscore à l'intérieur de la writeHighscore()
fonction, mais comment puis-je lui passer des objets?
Édition 1 - Création d'objets
Highscore hs = Highscore("John", 975);
Serial.println(hs.toString()); // Prints "John - 975" as expected
writeHighscore(hs); // Error
&hs
approche avant d'écrire le message, ainsi que de passer le pointeur writeHighscore(&hs)
-> void writeHighscore(Highscore *hs)
mais en vain.