Saya membuat game kecil, dan ingin menyimpan skor tinggi. Saya membuat kelas Skor Tinggi di bagian atas file sketsa, seperti ini:
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
Sekarang. Di dekat bagian bawah sketsa, saya memiliki fungsi yang saya ingin mengambil objek Highscore sebagai parameter, tetapi kompiler tidak akan membiarkan saya. Contoh:
void writeHighscore(Highscore hs) {
File f = SD.open("high.txt", FILE_WRITE);
// Do stuff
Kesalahan kompilasi adalah sebagai berikut:
sketch.ino: 19: 21: error: variabel atau bidang 'writeHighscore' dinyatakan batal
sketch.ino: 19: 21: kesalahan: 'Skor tinggi' tidak dideklarasikan dalam lingkup ini
sketch.ino: Dalam fungsi 'void setup ()':
sketch.ino: 64: 20: error: 'writeHighscore' tidak dinyatakan dalam lingkup ini
Setelah mengubah tipe parameter ke String, int atau apa pun, semua kesalahan hilang. Saya dapat membuat objek Highscore DI DALAM writeHighscore()
fungsi, tetapi bagaimana saya bisa meneruskan objek ke sana?
Sunting 1 - Pembuatan objek
Highscore hs = Highscore("John", 975);
Serial.println(hs.toString()); // Prints "John - 975" as expected
writeHighscore(hs); // Error
&hs
pendekatan sebelum menulis posting, serta melewati pointer writeHighscore(&hs)
-> void writeHighscore(Highscore *hs)
tetapi tidak berhasil.