Вот я тут подумал - почему народ все тянется к С++ и не
программит на С? С++ этоже такой немеряный отстой .. я не
говорю о том что ООП кал - ООП супер вещь но на С он явно
не ложится .. если нужен обязательно ООП подход и писать
надо на С - то все(может быть почти все) можно
реализовать на С например классы или наследования
достаточно простым путем.
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)
- Форум с, структура/данные/наполнение, как оптимизировать?! (2025)
- Форум Создать плагин для Avidemux (2024)
- Форум Adventures in open-source world (2017)
- Форум Postfix Dovecot Mysql не приходят письма (2024)
- Статьи Как кушать вилкой. ... или о fork() в двух словах (2023)
- Новости Nim 0.15.0 (2016)