El problema con la herencia se da por estar incluyendo los archivos en el orden opuesto.
Código:
#include "persona.h"
#include "empleado.h"
#include "empresa.h"
Despues tenes un par de errores de tipeo (count por cout y c_srt por c_str).
Con eso compila aunque hay un warning fundamental:
warning C4700: uninitialized local variable 'emp' used.
emp es un puntero indefinido y lo usas inmediatamente asi que el programa falla sin remedio.
Código:
empresa *emp = new empresa;
Otro error en imprimirpuesto, tenes un bucle donde la variable contador es i y usas la cantidad de empleados en su lugar, mejor asi:
Asi mas o menos funcionara algo, depuralo.