Я делаю крошечную игру и хочу хранить рекорды. Я сделал Highscore-класс в верхней части файла эскиза, например так:
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
Сейчас же. В нижней части эскиза у меня есть функция, которую я хочу взять Highscore-объект в качестве параметра, но компилятор не позволит мне. Пример:
void writeHighscore(Highscore hs) {
File f = SD.open("high.txt", FILE_WRITE);
// Do stuff
Ошибка компиляции выглядит следующим образом:
sketch.ino: 19: 21: ошибка: переменная или поле 'writeHighscore' объявлено void
sketch.ino: 19: 21: ошибка: 'Рекорды' не были объявлены в этой области
sketch.ino: в функции 'void setup ()':
sketch.ino: 64: 20: ошибка: writeHighscore не было объявлено в этой области
После изменения типа параметра на String, int или что-либо еще все ошибки исчезают. Я могу создавать Highscore-объекты ВНУТРИ writeHighscore()
функции, но как я могу передать ей объекты?
Редактировать 1 - Создание объекта
Highscore hs = Highscore("John", 975);
Serial.println(hs.toString()); // Prints "John - 975" as expected
writeHighscore(hs); // Error
&hs
подход до написания поста и прохождения указателя writeHighscore(&hs)
-> void writeHighscore(Highscore *hs)
но безрезультатно.