No entiendo si ese código es una cabecera.h o un fragmento de archivo .cpp.
No debes incluir código en una cabecera, a no ser que sea código inline.
Por otro lado, si una cabecera no está diseñada con cuidado, y se abre desde dos puntos distintos del proyecto, el compilador puede dar errores de múltiple definición.
Ejemplo:
Código:
#ifndef CabeceraH
#define CabeceraH
// CabeceraH será el mismo nombre del archivo cabecera, por ejemplo. QUE NO SE REPITA....
//---------------------------------------------------------------------------
//DEFINICIONES
.
.
.
//---------------------------------------------------------------------------
#endif
Esta técnica asegura que el compilador sólo leerá una vez las definiciones.
En ocasiones, algunas cabeceras del sistema, son muy complejas, con múltiples condicionantes que, si no las conocemos, nos darán errores aparentemente inexplicables.
Saludos.