一意のBIS_Dataクラスによって継承される、非常に一般的な純粋仮想クラスi_BIS_Dataを作成したいとします。C++の構造体のオーバーロード
i_BIS_Dataのすべての子供がbis_data構造体をすべて同じものにすることを希望します。私は私の子供のクラスには、次のようになりことを期待:
class BIS_0192_Aircraft_ID_Data : i_BIS_Data
{
public:
struct bis_data
{
UInt16 acid;
UInt16 parity;
};
void setData(bis_data data){ m_data.parity = data.parity;
m_data.acid = data.acid; }
}
私はBIS_0192_Aircraft_ID_Dataを使用するクラスをコンパイルしようとすると、私は次のエラーを取得:エラーC2061:構文エラー:識別子「bis_data」を。親クラスの中でbis_dataを定義していないので、私はそれを信じています。
構造を「オーバーロード」でき、複数の子クラスがbis_dataの定義を可能にすることは可能ですか?
+1。あなたは、テンプレートベースのソリューションで私を16秒倒す。この後者の問題(共通ではない基底クラス)は、テンプレートクラスを非テンプレートクラスから派生させることで修正できます。 –
これは、最初の問題はすべてのサブタイプが差分構造定義を持っていると述べたので、i_BIS_Data *を使用してサブタイプのいずれかを参照することはできません。ダビデの解決策はおそらくそれが得られるほど良いものです。 –
@WayneTanner:LSPに違反するため、サブタイプではありません。 –