我想模拟面向对象的编程,所以在 C++ 中,让我们考虑以下 C 代码:
typedef struct tAnimal{
char * name;
int age;
}tAnimal;
typedef struct tAnimal2{
char * name;
int age;
float size;
}tAnimal2;
在 C++ 中,您可以创建从同一类继承的不同对象的表。我想在 C 中做同样的事情,让我们考虑以下代码:
tAnimal ** tab;
tab = malloc(sizeof(tAnimal*)*2);
tab[0] = malloc(sizeof(tAnimal));
tab[1] = malloc(sizeof(tAnimal2));
请注意,分配是有效的,因为 malloc 返回一个 void 指针,而 C 不需要强制转换。但是我仍然无法访问 size 字段,因为选项卡元素的类型毕竟是 tAnimal 。
有没有办法解决这个问题?,我想远离 void ** 指针。