【发布时间】:2017-10-24 10:36:34
【问题描述】:
为了简化我的代码,我希望使用可以存储多个对象的数组,然后可以调用这些对象中的函数。
我创建了许多具有(部分)相同成员函数的类。当然,这些功能有不同的实现。我希望将这些对象放在一个数组中,然后我可以遍历它来调用这些函数。
我有许多传感器,我们称它们为 Sensor1、Sensor2 和 Sensor3。它们都有一个名为 readSensor() 的函数和一个名为 sensorData() 的函数。 (第一个读取传感器,第二个返回一行 html - 在我的实际软件中,大约有 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();
}
}
这样我就可以读取所有传感器,而不必写出所有传感器,并且希望我不会忘记任何一个。使代码更短,我可以在一个地方添加传感器。该数组仅用于所有传感器具有的功能(尽管在不同的实现中名称相同——毕竟这是不同的传感器)。这些对象也有一些特定于传感器的函数,需要时直接调用。
这可能吗?如果有,怎么做?
【问题讨论】:
-
可能是传感器接口(基类)?
标签: c++ arrays class pointers arduino