Clase de nombre de tipo desconocido

Tengo los siguientes archivos de encabezado:

https://gist.github.com/wemakeweb/5501443 y el compilador siempre informa"Clase de nombre de tipo desconocido". He incluido Forward Statement, para romper circular incluyendo, donde creo que tengo que hacerlo. ¿Qué olvidé?

Editar: lo puse todo en un archivo de encabezado, y el compilador sigue reportando "esperado; después del declarador de nivel superior"

https://gist.github.com/wemakeweb/5583500

Editar 2 Ahora estoy consiguiendo errores del enlazador. "Símbolos indefinidos para arquitectura x86_64"

Resueltos, problemas fueron

Circular Incluyendomain.c en lugar de main.cppel código real estaba en una biblioteca estática que no estaba enlazada correctamente

Respuestas a la pregunta(2)

Su respuesta a la pregunta