How to inherit structure in a plain C
c, data-structures, inheritance
Solution
I know that it is possible to typecast and offset the pointer
Not necessarily:
void foo(Kind1*);
struct Kind2
{
Kind1 basedata;
int z;
float angle2;
float angle3;
}
//...
Kind2 k;
foo(&(k.basedata));
Problem
I am working in a plain C (embedded project, little memory) and I have a structure ``` typedef struct { int x; int y; int z; float angle; float angle1; float angle2; } Kind1; ``` There are cases when I need all fields, and there are cases when I need x, y and angle only. In C++ I would create a base class with these 3 fields, would inherit from it another class with additional 3 fields and would instantiate one or another per need. How can I emulate this behaviour in plain C? I know that I can make something like ``` typedef struct { int x; int y; float angle; } Kind1; typedef struct { Kind1 basedata; int z; float angle2; float angle3; } Kind2; ``` but then I cannot pass pointer to Kind2 where a pointer to Kind1 is requested. I know that it is possible to typecast and offset the pointer, I just wonder if there is a better, safer way.