Вот я тут подумал - почему народ все тянется к С++ и не программит на С? С++ этоже такой немеряный отстой .. я не говорю о том что ООП кал - ООП супер вещь но на С он явно не ложится .. если нужен обязательно ООП подход и писать надо на С - то все(может быть почти все) можно реализовать на С например классы или наследования достаточно простым путем. struct class_ex { int pubint1; int pubint2; char *pubstr3; int (*getpub1)(struct class_ex *this); /* method */ int (*getpub2)(struct class_ex *this); /* method */ int (*getpub3)(struct class_ex *this); /* method */ int (*convert)(struct class_ex *this, int, char*); .. }; наследование от одного предка strct parent { int data1; int data2; char *data3; ... /* methods */ } struct p_parent { struct parent; int data_specific_to_p_parent; char kkk[12]; .... /* p_parent specific methods */ }; struct pp_parent { struct p_parent; int data_specific_to_pp_parent; .... /* pp_parent specific methods */ }; ... ... #define PARENT(x) (struct parent*)(x) #define P_PARENT(x) (struct p_parent*)(x) #define PP_PARENT(x) (struct pp_parent*)(x) если нужно множественное наследование то это тоже можно реализовать высчитывая соответствующие оффсеты. помоему это гораздо наглядние и быстрее и натуральнее и вообще более по настоящему нежеле в C++ struct class_ex* init_newclass(void) { struct class_ex *newc; newc = (struct class_ex*)malloc(sizeof(struct class_ex)); /* TODO: err checks */ newc->getpub1 = class_getpub1; newc->getpub2 = class_getpub2; newc->getpub3 = class_getpub3; newc->convert = class_convert; ... return newc; } newc = init_newclass(); P_PARENT(newc)->get_p_sec_val(P_PARENT(newc)); newc->pub1 = 2; p1 = newc->getpub1(newc); помоему все это гораздо натуральнее и нет той херовости что в C++
Ответ на:
комментарий
от lg
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от lg
Ответ на:
комментарий
от lg
Ответ на:
комментарий
от kswapd
Ответ на:
комментарий
от kswapd
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Исследование CryEngine 2 SDK 1.4.0 (2012)
- Форум Драйвер чтения и записи (2013)
- Форум Создать плагин для Avidemux (2024)
- Форум Adventures in open-source world (2017)
- Форум Postfix Dovecot Mysql не приходят письма (2024)
- Статьи Как кушать вилкой. ... или о fork() в двух словах (2023)
- Новости Nim 0.15.0 (2016)