私のコードを単純化するために、いくつかのオブジェクトを格納できる配列を使いたいと思っています。そのあとでそれらのオブジェクトの関数を呼び出すことができます。多くの異なるクラスで同じ関数を呼び出す
私は、(部分的に)同じメンバ関数でいくつかのクラスを作成しました。もちろん、これらの関数は異なる実装を持っています。これらのオブジェクトを単一の配列に配置したいと考えています。そのあと、それらの関数を呼び出すことができます。
私が持っているのは、いくつかのセンサーです。それらをSensor1、Sensor2、Sensor3と呼ぶことにしましょう。それらのすべてにreadSensor()という名前の関数とsensorData()という関数があります。 (実際のソフトウェアには10-12センサーと4つの機能があるので、コードを簡略化してセンサを簡単に追加できるようにしたいと思っています)。
だから、私は何を探していることは、このようなものです:私はそれらのすべてを書くことと、私はすべてのダウンを忘れてはいけないことを望んずに、すべてのセンサーを読むことができますこの方法
Sensor1 sensor1;
Sensor2 sensor2;
Sensor3 sensor3;
byte nSensors = 3;
(type?) *sensorList[nSensors] // list of pointers to the sensors - don't know how to declare this.
void setup() { // yes, this is for Arduino.
sensorList[0] = &sensor1; // store the pointers to the class objects.
sensorList[1] = &sensor2;
sensorList[2] = &sensor3;
}
void readSensors() {
for (int i=1, i<nSnesors, i++) {
sensorList[i]->readSensor();
}
}
この線。コードをもっと短くして、センサーを1か所に追加することができます。この配列は、すべてのセンサーが持つ機能(同じ実装でも同じ名前ですが、これはまったく異なるセンサーです)にのみ使用されます。オブジェクトにはセンサ固有の機能もあり、必要に応じて直接呼び出すことができます。
これも可能でしょうか?もしそうなら、どうですか?
センサインタフェース(基本クラス)は多分? – alain