История изменений
Исправление Deleted, (текущая версия) :
Появилась необходимость «подружить» процедурный язык Си и объекты.
Си замечательно дружит с объектами и ничто не мешает использовать в нём ООП. Другой вопрос в том, что у него нет встроенных средств для ООП.
SomeClass instant = new SomeClass(); instant.x = 1; instant.SomeMetod(3);
Как сделать то же самое в терминах языка Си? Указатель ведь может ссылаться на что угодно в памяти.
struct SomeClass *instant = malloc(sizeof(*instant));
SomeClass_Constructor(instant);
instant->x = 1;
SomeClass_SomeMethod(instant, 3);
- Наследование -> добавление структуры предка первым элементом новой структуры;
- виртуальные функции -> указатели на функции;
- this передаётся явно.
Но как уже написали выше, тебе нужно будет написать свою обёртку для этого. Или попробовать найти какой-нибудь готовый генератор обёрток.
Исходная версия Deleted, :
Появилась необходимость «подружить» процедурный язык Си и объекты.
Си замечательно дружит с объектами и ничто не мешает использовать в нём ООП. Другой вопрос в том, что у него нет встроенных средств для ООП.
SomeClass instant = new SomeClass(); instant.x = 1; instant.SomeMetod(3);
Как сделать то же самое в терминах языка Си? Указатель ведь может ссылаться на что угодно в памяти.
struct SomeClass *instant = malloc(sizeof(*instant));
SomeClass_Constructor(instant);
instant->x = 1;
SomeClass_SomeMethod(instant, 3);
- Наследование -> добавление структуры предка первым элементом новой структуры;
- виртуальные функции -> указатели на функции.
Но как уже написали выше, тебе нужно будет написать свою обёртку для этого. Или попробовать найти какой-нибудь готовый генератор обёрток.