Есть такой известный в широких кругах программист - Джон Кармак. Известен он с 90-х главным образом своими играми - Doom и Quake и многочисленными их потомками.
Так вот он до игры Doom 3 всячески сопротивлялся новомодным веяниям и не использовал язык программирования C++, а использовал язык C.
И вы бы наверное подумали что он не использовал и Объектно-Ориентированное-Программирование?
Как бы не так!
Он давно уже опубликовал исходные коды своих знаменитых игр и там прекрасно видно как он воспроизводит технику ООП на структурах в чистом Си без классов.
Вот так, например: Quake-2/client/qmenu.h at master · id-Software/Quake-2 · GitHub
typedef struct
{
int type;
const char *name;
int x, y;
menuframework_s *parent;
int cursor_offset;
int localdata[4];
unsigned flags;
const char *statusbar;
void (*callback)( void *self );
void (*statusbarfunc)( void *self );
void (*ownerdraw)( void *self );
void (*cursordraw)( void *self );
} menucommon_s;
typedef struct
{
menucommon_s generic; // НАСЛЕДОВАНИЕ!!!
char buffer[80];
int cursor;
int length;
int visible_length;
int visible_offset;
} menufield_s;
Я прям вот комментарием с восклицательными знаками обозначил место где происходит наследование, а указатели на функции сами за себя говорят.
Кармак как минимум в Quake 2 в хвост и гриву использовал объектно-ориентированный подход, просто не хотел перейти на язык максимально дружелюбный к этому. И в Doom 3 перешёл наконец то и был доволен всячески.
Поэтому когда такие зубры и ретрограды не могут всё-таки сопротивляться новомодным (лет 30 как в 2000-ом году) веяниям, то кто тут мы и имеем ли даже вот моральное право говорить “мне оно не нужно”?
Эх…
Говорить то можно конечно, кто запретит, но реально - давайте уже примем как данность, что ООП в каждом тапке имеет право местом быть.