Hi everyone,
One way to hack limited form of polymorphism in C is to do something like this:
typedef struct {
int x;
} base;
typedef struct {
base super;
int y;
} derived;
Now you can refer to a derived instance as a base instance, depending on how the variable is cast, ie:
derived my_derived;
my_derived.y = 10;
my_derived.super.x = 20;
//will print 10
printf("%d", (&my_derived)->y);
//will print 20
printf("%d", ((base*)(&my_derived) )->x);
So my question is, how exactly does this work? Is it because when you cast it as base and referencing a variable, you're referencing the int member 'x' as the offset from the start of the 'base' struct? This is the only thing I can think of, any help would be appreciated.
Thanks alot!