А зачем указатель на функцию в void* переводить? Вот typedef Base_Class* (*TBase_Class_CreateFunc)() - это уже другое дело. Только что в этом такого плохого? Универсальный подход.
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)