我在我的一个项目中使用GTK,我注意到该库支持继承。因为您可以将子结构类型转换为其父结构,反之亦然。除了GTK,我从来没有见过这种(如此完美):
struct parent p = {5};
struct child c;
c = (struct child)p;
c.b = 1;
//c.a = 5, c.b = 1
使用父结构作为第一个元素是否这样做?因为这看起来更加整洁。但填充和对齐会干扰吗?
struct parent { int a; }
struct child { struct parent p; int b; }
或者重写所有父数据会让它发生吗?
struct parent { int a; }
struct child { int a; int b; }
编辑我不打算在C中实现OOP的所有支柱。我的问题只涉及在父结构和子结构中输入数据。我发现GTK使用GObject来做到这一点,但是为了实现GObject正在进行的类型转换必须做些什么呢?