我想模仿面向對象編程,所以在C++中,讓我們來看看下面的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返回一個空指針,和C不需要鑄造。但我仍然無法訪問size字段,因爲tab元素的類型畢竟是tAnimal。
有沒有辦法解決這個問題?,我想遠離void **指針。
[**這是一個項目(一本書)將幫助你在C **中開發面向對象特性](http://www.cs.rit.edu/~ats/books/ooc.pdf) –
「在C++中,您可以創建一個由同一類繼承的不同對象的表「不是真的,只有指向對象的指針!如果你使用的對象,你將他們切片:http://stackoverflow.com/questions/274626/what-is-the-slicing-problem-in-c – fscan