Comments 24
Осталось таблицу виртуальных методов объявить как static, чтобы был только один экземпляр, да поставить на неё указатель в структуре и получится обычный vtable.
+6
Можно, но я хотел избавиться от промежуточных сущностей.
0
Но увеличился расход памяти т.к. таблица хранится в каждом экземпляре класса.
0
К месту ли ваши модные мемы, а?
+2
Посмотрите, как написан Gtk.
+2
Я скопировал их велосипед? :)
Gtk большой, на что именно советуете посмотреть?
Gtk большой, на что именно советуете посмотреть?
0
0
Ну, ясное дело, что умные люди давно эту схему придумали и используют.
Но, насколько я понял, все «объекты» в GTK+ наследуют один и тот же интерфейс: GObjectClass. Я же пытался реализовать множественное наследование. Возможно, и такое у разработчиков уже есть.
Но, насколько я понял, все «объекты» в GTK+ наследуют один и тот же интерфейс: GObjectClass. Я же пытался реализовать множественное наследование. Возможно, и такое у разработчиков уже есть.
0
О я так писал на первом курсе университета на паскале. Объекты мы еще не знали. Так вот я написал:
const length=10;
type
vofunc = function (self);
menu = record
items: array[0..length];
draw: vofunc;
end;
Где а потом добавлял метод и всегда первым параметром передавал саму структуру. у преподавателя глаза полезли на лоб.
const length=10;
type
vofunc = function (self);
menu = record
items: array[0..length];
draw: vofunc;
end;
Где а потом добавлял метод и всегда первым параметром передавал саму структуру. у преподавателя глаза полезли на лоб.
+1
Я применил подобный подход для драйверов GPIO в библиотеке для дисплеев на контроллере HD44780 (сорцы, статья с объяснением). Думаю, более-менее опытному разработчику на C этот подход рано или поздно придёт в голову даже даже без знания C++ и ООП, так как естественен для C. А в ядре Linux он используется весьма активно: читаем книгу «Идеальный код» (Beatiful Code), главу 16 — «Модель драйверов ядра Linux: преимущества совместной работы» за авторством Грега Кроа-Хартмэна (Greg Kroah-Hartman).
+7
Класс!
+1
Есть замечательная книга Object-Oriented Programming With ANSI-C bit.ly/T90E
+4
Спасибо за статью! Что-то начали на хабре снова появляться серьёзные технические вещи, что не может не радовать =)
+1
Sign up to leave a comment.
Добавляем немного виртуальности в C