我有一个C++程序,当我尝试编译它时会出错:
calor.h|6|error: expected unqualified-id before ‘using’|
Run Code Online (Sandbox Code Playgroud)
这是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
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
该类继承自gradiente:
#ifndef _GRADIENTE_
#define _GRADIENTE_
#include "sensor.h"
using namespace std;
class Gradiente : public Sensor
{
protected:
int vActual, vMin;
public:
Gradiente();
~Gradiente();
}
#endif
Run Code Online (Sandbox Code Playgroud)
而这又从中继承而来 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
Run Code Online (Sandbox Code Playgroud)
为了完整起见,这里是 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
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
小智 19
在本课程结束时缺少分号:
class Gradiente : public Sensor
{
protected:
int vActual, vMin;
public:
Gradiente();
~Gradiente();
} // <-- semicolon needed after the right curly brace.
Run Code Online (Sandbox Code Playgroud)
此外,您的包含警卫的名称是非法的.以下划线和大写字母开头的名称是为C++实现保留的(包含双下划线的名称) - 不允许在自己的代码中创建此类名称.你永远不应该使用:
using namespace std;
Run Code Online (Sandbox Code Playgroud)
在头文件中.最后,传感器基类中的析构函数几乎可以肯定是虚拟的.
Geo*_*rge 10
在gradiente.h中,您在类声明结束时忘记了分号.
你需要这个:
class Gradiente : public Sensor
{
protected:
int vActual, vMin;
public:
Gradiente();
~Gradiente();
};
Run Code Online (Sandbox Code Playgroud)
看到添加的分号?