これは Arduino プロジェクトで、モード ボタンがあります。このボタンは、現在のアプリケーション変数を player/radio/navigation/phone に変更します。すべてのアプリケーションは「App」から継承されます。
「apps[0]->volume_up();」を実行すると、アプリケーションにメソッド volume_up がないと叫ぶ。アプリに追加すると、プレーヤーではなくアプリで volume_up が実行されます。
私は何を間違っていますか?
int index = 0;
App *apps[4];
void setup(){
Player *player = new Player();
Radio *radio = new Radio();
Navigation *navigation = new Navigation();
Phone *phone = new Phone();
apps[0] = player;
apps[1] = radio;
apps[2] = navigation;
apps[3] = phone;
}
void loop(){
int sensorValue = analogRead(A0);
if (sensorValue == 156 || sensorValue == 157){ // Mode button
index = (index + 1) % (sizeof(apps)/sizeof(apps[0]));
delay(300);
}
if (sensorValue == 24 || sensorValue == 23){ // Volume button
apps[index]->volume_up();
delay(100);
}
}
編集
#ifndef App_H
#define App_H
#include "Arduino.h"
class App {
public:
void volume_up();
};
#endif
#include "App.h"
void App::volume_up(){
Serial.println("VOLUME_UP");
}