私は C++ が初めてで、メソッドのパラメーターとして任意の構造体を受け入れることができるかどうかを知りたいです。
これが事実です。hw_manager
ハードウェア クラス ( としましょう) とやり取りする1 つのクラス ( としましょうhw_device1
) があります。現在hw_manager
、 のメソッドが呼び出され、メソッドのhw_device1
結果が構造体パラメータを介して返されます (参照として構造体パラメータを送信し、参照されたパラメータの値を変更します)。
C++ コードでは、次のようになります。
struct sSensorStatus {
unsigned char sensor1;
unsigned char sensor2;
};
bool checkSensorStatus(struct sSensorStatus &status) {
// Change the status here
}
さて、ハードウェアが変更されたので、hw_device2
まったく異なる操作を行う新しいクラスを作成する必要があります。
struct sHardwareStatus {
unsigned char loader;
unsigned char transport;
unsigned char ejector;
unsigned char mouth;
};
bool checkHardwareStatus(struct sHardwareStatus &status) {
// Change the status here
}
コードを変更するのではなく(この層の上のコードに影響します)、インターフェイスを実装する予定です。たとえば、メソッドを持っているとしhw_manager
ましょう。アイデアは次のとおりです。IHardware
doAction
bool doAction(int cmdID, ????) {
// switch case cmdID
// based on the cmdID, type cast the ???? into the struct
}
何を入れようかな???? あらゆる種類の構造体を受け入れるには?これを C++ で行うことはできますか?
ありがとう
編集
ハードウェアの内部には別の構造体もありますので、テンプレートを使用するのは適切ではないと思います。説明が遅くなり申し訳ありません。