Вот я тут подумал - почему народ все тянется к С++ и не 
программит на С? С++ этоже такой немеряный отстой .. я не
говорю о том что ООП кал - ООП супер вещь но на С он явно
не ложится .. если нужен обязательно ООП подход и писать
надо на С - то все(может быть почти все) можно 
реализовать на С например классы или наследования 
достаточно простым путем.
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)