オブジェクト指向プログラミングをシミュレートしたいので、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はキャストを必要としないため、割り当てが機能することに注意してください。しかし、タブ要素のタイプは結局tAnimalであるため、サイズフィールドにはまだアクセスできません。
これを修正する方法はありますか?、void**ポインタを避けたいと思います。