Собственно ООП на сишке вполне реальная штука, в большинстве случаев "плюсы" нужны только для специфических фреймворков типа Qt / WxWidgets. Ну ещё стоит вспомнить о вагоне хаков в самом C++ и проблем с ними связанных - привет Sfinae, constant cast'ы, auto_ptr, Raii и прочие ужасы. В общем в виду своей сложности С++ учить стоит только когда он реально вам нужен.
Могу посоветовать
это.
Разберитесь с Glib'ом и Gtk - поймёте что С++ это просто ненужный слой абстракций.
Вот
так выглядят шаблоны на чистом си для абстрактного вектора с любым типом данных.
Generic тут более чем возможен, но возможно не так очевиден как в других языках.