For instance, I have a structure definition
struct Data {
uint8_t data1;
uint16_t data2;
virtual uint8_t getData1() { return data1; }
virtual uint16_t getData2() { return data2; }
}
I have a byte array
uint8_t data[3];
Is it safe to do this:
Data *d = (Data*)data;
I am asking because, i read that a class with virtual functions store a virtual table pointer and there's no standard defining it where it is stored in the object. Also, If I inherit from Data, for instance
struct Data2 : Data { uint8_t data3;
virtual uint8_t getData3() { return data3; } }
What can be the order in which member variables in the object of Data2 are stored? If I cast Data2 structure over a byte array would it be in the order data1, data2, data3? Thank you in advance.