C++ では、基本クラス Packet があり、次に多くの子 APIPacket、DataIOPacket などがあります。着信パケットを格納したいのですが、タイプがわからないため、これを変数に格納します。
Packet packet;
packet = DataIOPacket();
しかし、現在 DataIOPacket には関数 getAnalogData(); があります。私はできません:
packet.getAnalogData();
パケットにはこの機能がないため。Javaでは、パケットに格納されているオブジェクトの実際のタイプが失われないため、これが可能だと思います(これは正しいですか?)。しかし、C++ では、私の DataIOPacket は Packed に絞り込まれ、Packet で宣言されていない関数が失われます。
すべての子のすべての関数に対して、Packet で仮想関数を作成できます。しかし、私にとってこれは、ほとんどの場合呼び出されるべきではない Packet の多くの関数を意味します。APIPacket で getAnalogData() を呼び出しても意味がありません。
この問題はどのように解決されますか? 答えは見つけられませんが、多くの人がそれに遭遇しなければならないと感じています。
DataIOPacket と APIPacket への型キャストで何かを行うこともできますが、これも実際にはクリーンなソリューションではないようです。
私の問題を解決するライブラリはありますか?
Rgds、
ロエル