所以我试图更好地理解虚拟方法。我有一个基类Sensor和几个子类SensorTemp * SensorPh * SensorOrp
class Sensor
{
public:
virtual void updateValue();
}
然后子类用自己的方法定义覆盖 updateValue(这发生在每个子类中)
.h 文件
#include "Sensor.h"
class SensorTemp : public Sensor
{
private:
public:
};
.cpp 文件
#include "Sensor.h"
#include "SensorTemp.h"
void Sensor::updateValue(){
int reading = analogRead(pinId);
float voltage = reading * 5.0;
voltage /= 1024.0;
currentVal = voltage * 100 ;
Serial.print("temp: "); Serial.println(currentVal);
}
我的问题是这适用于第一个子类声明,尽管以下内容会出现编译器错误: updateValue() .... 首先在这里定义 ld.exe : : 禁用松弛:它不适用于多个定义
因此,如果我想以与每个子类不同的方式定义方法,我会坚持采用哪种方法?
任何见解将不胜感激!