Flo*_*011 3 c inheritance data-structures
我在一个简单的C(嵌入式项目,小内存)工作,我有一个结构
typedef struct
{
int x;
int y;
int z;
float angle;
float angle1;
float angle2;
} Kind1;
Run Code Online (Sandbox Code Playgroud)
有些情况下,我需要所有字段,有些情况下我只需要x,y和角度.
在C++中,我将使用这3个字段创建一个基类,它将从另一个类继承另外3个字段,并根据需要实例化一个或另一个.如何在普通C中模拟这种行为?
我知道我可以做类似的事情
typedef struct
{
int x;
int y;
float angle;
} Kind1;
typedef struct
{
Kind1 basedata;
int z;
float angle2;
float angle3;
} Kind2;
Run Code Online (Sandbox Code Playgroud)
但是我无法将指针传递给Kind2,其中请求指向Kind1的指针.
我知道有可能对指针进行类型转换和偏移,我只是想知道是否有更好,更安全的方法.
我知道可以对指针进行类型转换和偏移
不必要:
void foo(Kind1*);
struct Kind2
{
Kind1 basedata;
int z;
float angle2;
float angle3;
}
//...
Kind2 k;
foo(&(k.basedata));
Run Code Online (Sandbox Code Playgroud)