У меня есть программа C++, и когда я пытаюсь скомпилировать это дает ошибку:C++ - ошибка: ожидается, неквалифицированный-идентификатор, прежде чем «с помощью»
calor.h|6|error: expected unqualified-id before ‘using’|
Вот файл заголовка для 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
Почему это происходит?
Этот класс наследует от gradiente
:
#ifndef _GRADIENTE_
#define _GRADIENTE_
#include "sensor.h"
using namespace std;
class Gradiente : public Sensor
{
protected:
int vActual, vMin;
public:
Gradiente();
~Gradiente();
}
#endif
Который, в свою очередь, наследует от 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
Для полноты, вот 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
Что я делаю неправильно?
Спасибо за ваши дополнительные исправления! –
Как раз пояснить, причина, по которой вы никогда не должны использовать «using namespace std» (или что с любым другим пространством имен, если на то пошло), потому что пользователи вашего класса не будут ожидать, что их глобальное пространство имен будет загрязнено всем этим материалом из namespace std, когда они не просили об этом. Обычно вы хотите ограничить количество материалов, которые вы добавляете в глобальное пространство имен в своих заголовках, до минимума, необходимого для выполнения заданий, иначе вы рискуете ввести конфликты имен и другие забавные вещи. – George