だから私は仮想メソッドをよりよく理解しようとしています。基本クラス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 ::緩和の無効化:複数の定義では機能しません
それで、各サブクラスとは異なる方法でメソッドを定義したい場合、どのタイプのアプローチを取るべきかということに固執していますか?
どんな洞察も大歓迎です!