既存のコード:
typedef unsigned int uint;
Class A
{
union xReg
{
uint allX;
struct
{
uint x3 : 9;
uint x2 : 9;
uint x1 : 14;
}__attribute__((__packed__)) __attribute__((aligned(4)));
};
};
私の要件:ここで、Aからクラスを派生させる必要があり、派生クラスでは、x1、x2、およびx3のビットサイズを変更する必要があります。
どうすればこれを行うことができますか?ご協力いただきありがとうございます !
編集
私は約のクラス(Aとしましょう)を持っています。7〜8個のユニオン(それぞれがHWレジスタを表す)、および約20個(約)の関数。これらの関数のほとんどは、これらの共用体のインスタンスを作成し、ビット(私の例では、x1、x2、x3など)を使用します。
今、私の要件は、95%の機能が同じである新しいハードウェアのコードを追加することです。変更には、レジスタのビットサイズの変更、および一部の機能の変更が含まれます。したがって、20の関数のうち、実装を変更するには、少なくとも5つの関数を変更する必要があります。これが、継承を選択してこれらの関数をオーバーライドする理由です。
残りの15個の機能は、ビットサイズの変更のみが変更されます。したがって、これらの関数をオーバーライドしたくはありませんが、基本クラスの関数を使用します。ただし、レジスタ(ユニオン)のビットサイズは変更する必要があります。それ、どうやったら出来るの?