No no, ti posso garantire che la cosa è molto semplice da fare.
Ecco un frammento di codice (un po' disordinato).

codice:
type TSincProcedure= procedure() of Object;

// In questa classe definisco il puntatore e se è definito lo invoco
TNERigaLog: TSincProcedure;
    published
      property OnRigaLog: TSincProcedure read TNERigaLog write TNERigaLog;

  ...
  if Assigned(TNERigaLog) then TNERigaLog();
  ...


// Questa è una classe che instanzia TThLettoreFinger ed associa il puntatore alla funzione Log
TThLettoreFinger.OnRigaLog:= @Log;
In C è molto facile, in C++ credo che si debbano usare gli slot come consigliato sopra. Se ci fosse una strada più semplice sono tutt'orecchi.