Tengo un programa en C++ y cuando intento compilar que se da un error:C++ - Error: se esperaba sin reservas-id antes 'usando'
calor.h|6|error: expected unqualified-id before ‘using’|
Aquí está el archivo de cabecera para la clase calor
:
#ifndef _CALOR_
#define _CALOR_
#include "gradiente.h"
using namespace std;
class Calor : public Gradiente
{
public:
Calor();
Calor(int a);
~Calor();
int getTemp();
int getMinTemp();
void setTemp(int a);
void setMinTemp(int a);
void mostraSensor();
};
#endif
¿Por qué sucede esto?
Esta clase hereda de gradiente
:
#ifndef _GRADIENTE_
#define _GRADIENTE_
#include "sensor.h"
using namespace std;
class Gradiente : public Sensor
{
protected:
int vActual, vMin;
public:
Gradiente();
~Gradiente();
}
#endif
Que a su vez hereda de sensor
#ifndef _SENSOR_
#define _SENSOR_
#include <iostream>
#include <fstream>
#include <string>
#include "definicoes.h"
using namespace std;
class Sensor
{
protected:
int tipo;
int IDsensor;
bool estadoAlerta;
bool estadoActivo;
static int numSensores;
public:
Sensor(/*PARAMETROS*/);
Sensor(ifstream &);
~Sensor();
int getIDsensor();
bool getEstadoAlerta();
bool getEstadoActivo();
void setEstadoAlerta(int a);
void setEstadoActivo(int a);
virtual void guardaSensor(ofstream &);
virtual void mostraSensor();
// FUNÇÃO COMUM
/* virtual int funcaoComum() = 0;
virtual int funcaoComum(){return 0;};*/
};
#endif
Para completarlo, aquí está definicoes.h
#ifndef _DEFINICOES_
#define _DEFINICOES_
const unsigned int SENSOR_MOVIMENTO = 0;
const unsigned int SENSOR_SOM = 1;
const unsigned int SENSOR_PRESSAO = 2;
const unsigned int SENSOR_CALOR = 3;
const unsigned int SENSOR_CONTACTO = 4;
const unsigned int MIN_MOVIMENTO = 10;
const unsigned int MIN_SOM = 10;
const unsigned int MIN_PRESSAO = 10;
const unsigned int MIN_CALOR = 35;
#endif
¿qué estoy haciendo mal?
¡Gracias por sus correcciones adicionales! –
Solo para aclarar, la razón por la que nunca debes usar "using namespace std" (o eso con cualquier otro espacio de nombres, para el caso) es porque los usuarios de tu clase no esperan que su espacio de nombres global se contamine con todo esto namespace std cuando no lo pidieron. Por lo general, desea limitar la cantidad de elementos que agrega al espacio de nombres global en sus encabezados al mínimo requerido para realizar el trabajo, de lo contrario corre el riesgo de introducir conflictos de nombres y otras cosas divertidas. – George