LINUX.ORG.RU

Реализация наследования в C


0

0

Не поделитесь мнениями или ссылками, как лучше и проще реализовать наследование в C? Пока что единственное, с чем встречался - это Glib, но как-то у них уж больно сложно, хотелось бы по-проще без лишнего гемороя. Может быть есть уже хорошо описанные подходы или библиотеки для реализации подобных вещей?


Ответ на: комментарий от lester

По работе требуется писать именно на C, и постоянно сталкиваюсь с тем, что использую одинковые структуры-объекты в разных частях программы (чтобы не размножать код), но эти же разные части программы требуют наличия для каждой из них специфических полей в данных структурах, которые не используются в других частях, и в итоге приходится хранить в одной структуре-объекте кучу лишних полей. :(

riYu
() автор топика

> Пока что единственное, с чем встречался - это Glib

в openCV еще можно посмотреть

dilmah ★★★★★
()
Ответ на: комментарий от riYu

структуры в С "наследуются" без проблем. В питоне весь ООП на уровне исходников так и сделан.

true_admin ★★★★★
()
Ответ на: комментарий от riYu

Вообще, если отбросить множественное наследование (кое не нужно), и применить наследование только к структурам, то можно классический метод попробовать.
Ставить базовую в начало наследуемой.

struct Base {
int i;
};

struct Derived {
struct Base base;
int j;
};

tzukko
()
Ответ на: комментарий от riYu

> По работе требуется писать именно на C

1. А вот отсюда поподробнее. Почему требуется именно на С, а не на С-подобном подможестве С++?

2. Помню тут на ЛОРе один ембедщик (кажется fpga) пробовал на плюсах что-то писать с положительным эффектом.

www_linux_org_ru ★★★★★
()

tzukko, mironov_ivan, dilmah, true_admin - спасибо, посмотрю/почитаю.

> Вообще, если отбросить множественное наследование (кое не нужно), и применить наследование только к структурам, то можно классический метод попробовать.
Но ведь его как-то все равно придется оборачивать чем то вроде GTK-шных G_OBJECT(...) - иначе придется постоянно приводить типы, что в итоге станет причиной огромного количества ошибок.

> 1. А вот отсюда поподробнее. Почему требуется именно на С, а не на С-подобном подможестве С++?
> 2. Помню тут на ЛОРе один ембедщик (кажется fpga) пробовал на плюсах что-то писать с положительным эффектом.
Во-первых потому, что уже куча кода написана на C, а во-вторых, потому, что предприятие государственное, где, сами знаете как сейчас все устроено... Вообщем хорошо если кто знает более или менее нормально C - да и то редкость... Я конечно могу написать на C++/Python/etc, вот только кто это потом будет сопровождать, когда я уволюсь...

riYu
() автор топика
Ответ на: комментарий от tzukko

я бы варининг в С выдавал бы даже если бы (void)printf(..) забывали писать

namezys ★★★★
()
Ответ на: комментарий от tzukko

>Ворнинги будут без приведения типов, их можно и поигнорировать при желании =)

категорически не советую. особливо в случаях написания кода для 32 и 64 разр архитектур.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.