En principio sí.
En C es posible definir punteros a funciones, por lo que es posible dar un puntero a una función a una clase para que la llame cuando lo necesite. Si no recuerdo mal es algo así como:
int (*f)(parametros);
con lo que se define el puntero f, que es en realidad el puntero a una función que devuelve un entero y tiene como parámetros los especificados. Luego, para llamarla, se hace igual que si fuera una función normal:
valor = f(...)
Gracias a esto, puedes crear clases que llamen a funciones cuando quieran avisar de algo... o sea que tienes eventos.
Hay, no obstante, dos problemas.
Las funciones de las que te he hablado son de C, no de C++, por lo que no se puede llamar a una función de un objeto. Para eso tendrías que pasar el objeto, y la función, y aun así seguramente tendrías bastantes problemas para llamar a la función (conozco a gente que lo ha hecho, pero utilizando ensamblador).
El otro problema es que para que salten eventos debería haber varios hilos de ejecución o alguna clase de interrupción por hardware.
En TC, el programa principal siempre está haciendo algo (aunque esté en un bucle infinito que no hace nada), y no hay ninguna otra parte del código que se ejecute, por lo que no hay forma de que nadie llame a las funciones de los eventos, pues, al fin y al cabo, no se ejecuta el código de los generadores de eventos.
Lo de los eventos en TC que yo conozco son para las librerías del ratón, por ejemplo, con botones y demás. En ese caso se tiene la interrupción del ratón, que interrumpe momentaneamente el programa y puede ejecutar otra parte del código que ya sí podría generar los eventos. De todas formas hay que tener mucho cuidado con todo esto...
Espero haberte ayudado...