所以我想更好地理解虛擬方法。 我有一個基類傳感器和幾個子類SensorTemp * SensorPh * SensorOrp虛擬方法和C++中的子類
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:禁用放鬆:它不會有多重定義
所以我卡上,如果我想從每個子類不同的定義方法,我應該採取什麼樣的方式工作?
任何有識之士將不勝感激!
沒關係啊,我誤解了它是如何工作,感謝澄清。 –