Jistě, v C nemáš objekty, ale můžeš si je do potřebné míry implementovat.
Docela výstižné. Struktura by mohla obsahovat pointer na "třídu", která bude obsahovat pointery na "rodiče" a "metody".
To už mi připadá jako dost překombinované (spíš "jak do C vnutit OOP za každou cenu" versus "jak v C využít to "dobré" z OOP" - pokud bych chtěl psát čistě OOP, tak asi použiju nějaký OOP jazyk, stejně jako nebudu implementovat monádu v nasmu i když by to šlo ;-) ).
Ale dva základní běžné přístupy jsou asi nějaké základní struktura která obsahuje nějaký typový field a v kódu se pak předává pointer na tento typ, společný kód je normální a speciality pro "zděděné třídy" nějaký switch/if plus přetypování (případně i funkce když je toho víc) - dost často to na daný problém plně postačuje, i když je zřejmé že se míchá kód rodiče a potomka.
A pak druhá možnost jak už bylo řečeno, do základní třídy prostě přihodit pointer na funkci na zpracování požadavku a máme klasickou virtuální metodu, když je obsluha rozdílná tak je to určitě přehlednější, ale když jde jen o jeden řádek navíc proti rodiči, tak je IMHO přehlednější první způsob.
Oboje může být dost přehledné i bezpečné, ale taky se dá krásně zprasit, jako v každém jazyce ;-)