История изменений
Исправление AlexVR, (текущая версия) :
Что за фигня. Какие union
из ссылок?
Внешне, должно быть +/- так:
struct animal {
// ...
};
void animal_say(struct animal *animal);
void animal_free(struct animal *animal);
struct cat {
struct animal base;
// ...
};
struct animal* cat_new(/*...*/);
struct dog {
struct animal base;
// ...
};
struct animal* dog_new(/*...*/);
int main() {
struct animal *animals[2] = { cat_new(), dog_new() };
animal_say(animals[0]);
animal_say(animals[1]);
animal_free(animals[0]);
animal_free(animals[1]);
return 0;
}
Исходная версия AlexVR, :
Что за фигня. Какие union
из ссылок?
Внешне, должно быть +/- так:
struct animal {
// ...
};
void animal_say(struct animal *animal);
void animal_free(struct animal *animal);
struct cat {
struct animal base;
// ...
};
struct cat* cat_new(/*...*/);
struct dog {
struct animal base;
// ...
};
struct dog* dog_new(/*...*/);
int main() {
struct animal *animals[2] = { cat_new(), dog_new() };
animal_say(animals[0]);
animal_say(animals[1]);
animal_free(animals[0]);
animal_free(animals[1]);
return 0;
}