Tôi đang làm một trò chơi nhỏ, và muốn lưu trữ điểm số cao. Tôi đã tạo một lớp Highscore ở đầu tệp phác thảo, như thế này:
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
Hiện nay. Gần cuối bản phác thảo, tôi có một hàm tôi muốn lấy một đối tượng Highscore làm tham số, nhưng trình biên dịch sẽ không cho phép tôi. Thí dụ:
void writeHighscore(Highscore hs) {
File f = SD.open("high.txt", FILE_WRITE);
// Do stuff
Lỗi biên dịch như sau:
sketch.ino: 19: 21: error: biến hoặc trường 'writeHighscore' đã khai báo void
sketch.ino: 19: 21: error: 'Highscore' không được khai báo trong phạm vi này
sketch.ino: Trong hàm 'void setup ()':
sketch.ino: 64: 20: lỗi: 'writeHighscore' không được khai báo trong phạm vi này
Sau khi thay đổi loại tham số thành Chuỗi, int hoặc bất cứ điều gì, tất cả các lỗi sẽ biến mất. Tôi có thể tạo các đối tượng Highscore bên trong writeHighscore()
hàm, nhưng làm cách nào tôi có thể truyền các đối tượng cho nó?
Chỉnh sửa 1 - Tạo đối tượng
Highscore hs = Highscore("John", 975);
Serial.println(hs.toString()); // Prints "John - 975" as expected
writeHighscore(hs); // Error
&hs
cách tiếp cận trước khi viết bài, cũng như chuyển con trỏ writeHighscore(&hs)
-> void writeHighscore(Highscore *hs)
nhưng không có kết quả.