私が使用しているいくつかのレガシーコードには、次の定義があります。
struct VlanData
{
uint16_t mEtherType;
uint16_t mVlanId;
};
この構造体に新しいメンバーを追加したい:
struct VlanData
{
uint16_t mEtherType;
uint16_t mVlanId;
uint8_t mVlanPriority; // New member
};
ただし、VlanData
レガシーコードでは、の使用にかなりの一貫性がありませんでした。
構築時に初期化されていません:
VlanData myVlans;
myVlans.mEtherType = 0x8100;
myVlans.mVlanId = 100;
初期化された値:
VlanData myVlans = { 0x8100, 100 };
私がやりたいのは、多くのコードを更新せずに、レガシーコードで`mVlanPriority'が自動的に0に設定されるようにする安全な方法を考え出すことです。
レガシーコードを変更して、次のようにすべてのメンバーを値初期化できることを理解しています。
VlanData myVlans = {};
しかし、このコードをすべて更新する必要はありません。このようなデフォルトのコンストラクターを作成すると、次のことが役立つと思います。
VlanData()
: mEtherType(0),
mVlanId(0),
mVlanPriority(0)
{}
しかし、これはPOD
構造体の性質も破壊します。
だから私はいくつかの質問があると思います:
mVlanPriority
レガシーコードを更新せずにレガシーコードで0に設定されて いることを確認できる安全な方法はありますか?POD
これがタイプでなくなった場合、クラスのどのような使用が中断されますか?