小さなゲームを作っていて、ハイスコアを保存したい。次のように、スケッチファイルの先頭に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:エラー: 'Highscore'がこのスコープで宣言されていませんでした
sketch.ino:関数 'void setup()':
sketch.ino:64:20:エラー: 'writeHighscore'はこのスコープで宣言されていません
パラメータタイプをString、intなどに変更すると、すべてのエラーがなくなります。writeHighscore()
関数内でHighscoreオブジェクトを作成できますが、それにオブジェクトを渡すにはどうすればよいですか?
編集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)
が、役に立ちませんでした。