Задать вопрос
rhaport
@rhaport

Как лучше запрограммировать наследование в Си?

Доброго времени суток.

есть структура struct Base и к ней кучка функций. Кроме этого определенно несколько типов для коллбэк функций, которые принимают указатель на структуру в качестве параметра

Возникла надобность расширить структуру для опрелённой функциональности. Но саму структуру менять не хочется, да и не надо, так как в других местах эта функциональность не нужна. Что делать? Есть две идеи:

1) добавить в структуру struct Base поле указатель на void, где жаждущие могут сложить всё дополнительное
2) Создать структуру типа
struct MyCustomStruct
{
    struct Base base;
    t_whatever whatever;
    .... 
}

Соблюдая выравнивание, указатель на struct MyCustomStruct будет также указывать на Base. Таким образом его можно будет передавать в коллбэк функции и вроде как счастье.

Покритикуйте, пожалуйста, оба подхода и если есть другая идея, поделитесь ими :)
  • Вопрос задан
  • 375 просмотров
Подписаться 2 Оценить Комментировать
Ответ пользователя Сергей Протько К ответам на вопрос (2)
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
вместо наследования имеет смысл применить макросы, ибо "наследование типов" для вашей задачи насколько я понял не нужно.
Ответ написан