Estou fazendo um jogo minúsculo e quero armazenar pontuações mais altas. Eu criei uma classe Highscore na parte superior do arquivo de esboço, assim:
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
Agora. Perto da parte inferior do esboço, tenho uma função que quero usar como parâmetro um objeto Highscore, mas o compilador não me permite. Exemplo:
void writeHighscore(Highscore hs) {
File f = SD.open("high.txt", FILE_WRITE);
// Do stuff
O erro de complementação é o seguinte:
sketch.ino: 19: 21: erro: variável ou campo 'writeHighscore' declarado nulo
sketch.ino: 19: 21: erro: 'Highscore' não foi declarado neste escopo
sketch.ino: Na função 'void setup ()':
sketch.ino: 64: 20: erro: 'writeHighscore' não foi declarado neste escopo
Após alterar o tipo de parâmetro para String, int ou o que for, todos os erros desaparecem. Eu sou capaz de criar objetos Highscore DENTRO da writeHighscore()
função, mas como posso passar objetos para ela?
Editar 1 - Criação de objeto
Highscore hs = Highscore("John", 975);
Serial.println(hs.toString()); // Prints "John - 975" as expected
writeHighscore(hs); // Error
&hs
abordagem antes de escrever o post, além de passar o ponteiro writeHighscore(&hs)
-> void writeHighscore(Highscore *hs)
mas sem sucesso.