>>Why is element not declared?
Because you have recursive includes -- each header file includes the other.
In eventhandler.h try this:
#ifndef EVENTHANDLERH
#define EVENTHANDLERH
class element; // forward declaration of class
enum events {onClick, onHover};
typedef struct eventHandlerT {
void(*func)(element *elem);
events eventType;
} eventHandler;
#endif // EVENTHANDLERH