J'ai un programme C++ et lorsque je tente de le compiler, il donne une erreur:C++ - Erreur: attendu-id non qualifié avant « en utilisant »
calor.h|6|error: expected unqualified-id before ‘using’|
Voici le fichier d'en-tête de la classe 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
Pourquoi cela se produit-il?
Cette classe hérite de gradiente
:
#ifndef _GRADIENTE_
#define _GRADIENTE_
#include "sensor.h"
using namespace std;
class Gradiente : public Sensor
{
protected:
int vActual, vMin;
public:
Gradiente();
~Gradiente();
}
#endif
qui hérite à son tour 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
Pour être complet bien, voici 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'est-ce que je fais mal?
Merci pour vos corrections supplémentaires! –
Juste pour clarifier, la raison pour laquelle vous ne devriez jamais utiliser "using namespace std" (ou avec n'importe quel autre espace de nommage) est que les utilisateurs de votre classe ne s'attendront pas à ce que leur espace global soit pollué namespace std quand ils ne l'ont pas demandé. Habituellement, vous voulez limiter le nombre de choses que vous ajoutez à l'espace de noms global dans vos en-têtes au minimum requis pour faire le travail, sinon vous risquez d'introduire des conflits de noms et d'autres choses amusantes. – George