rhaport
@rhaport

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

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

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

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

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

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

Покритикуйте, пожалуйста, оба подхода и если есть другая идея, поделитесь ими :)
  • Вопрос задан
  • 374 просмотра
Решения вопроса 1
@VekaVeka
Это решено уже лет 30 назад.

Посмотрите WinAPI.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
вместо наследования имеет смысл применить макросы, ибо "наследование типов" для вашей задачи насколько я понял не нужно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы