There is the following definition in some legacy code that I am working with.
struct VlanData
{
uint16_t mEtherType;
uint16_t mVlanId;
};
I want to add a new member to this struct:
struct VlanData
{
uint16_t mEtherType;
uint16_t mVlanId;
uint8_t mVlanPriority; // New member
};
However, use of VlanData
has been fairly inconsistent through the legacy code.
Not initialized on construction:
VlanData myVlans;
myVlans.mEtherType = 0x8100;
myVlans.mVlanId = 100;
Value initialized:
VlanData myVlans = { 0x8100, 100 };
What I want to do is come up with a safe way to ensure that `mVlanPriority' is automatically set to 0 in legacy code without updating a lot of code.
I understand I could modify the legacy code to value-initialize all members like so:
VlanData myVlans = {};
But I don't want to have to update all of this code. I believe that creating a default constructor like this would help:
VlanData()
: mEtherType(0),
mVlanId(0),
mVlanPriority(0)
{}
But this would also destroy the POD
-ness of the struct.
So I guess I have several questions:
- Is there a safe way I can ensure that
mVlanPriority
is set to 0 in legacy code without updating the legacy code? - What use of the class would break if this was no longer a
POD
type?