我有以下文件,我不明白为什么它不起作用以及为什么我获得
'Pixel'未在此范围内声明
这里是标题:
#ifndef TABRESULTATS_H
#define TABRESULTATS_H
#include "Ligne.h"
#include <iostream>
#include <cmath>
#include "Pixel.h"
#include <vector>
using namespace std;
class Tableresultats
{
public:
Tableresultats(vector<Pixel> pixels);
Tableresultats(vector<Pixel> pixels, int seuil);
Tableresultats();
virtual ~Tableresultats();
protected:
private:
vector<int> m_debut;
vector<int> m_duree;
vector<int> m_valeurMax;
int m_seuilGris;
};
#endif // TABRESULTATS_H
.cpp:
#include "Tableresultats.h"
#include "Ligne.h"
#include <iostream>
#include <cmath>
#include "Pixel.h"
#include <vector>
using namespace std;
int vmaxTemp;
int dureeTemp;
Tableresultats::Tableresultats();
{
m_seuilGris=180; //valeur par defaut
vector<int> debut();
vector<int> duree();
vector<int> vmax();
//ctor
}
Tableresultats::Tablesreultats(vector<Pixel> pixels);
{
// ...
}
Tableresultats::Tableresultats(vector<Pixel> pixels, int seuil);
{
m_seuilGris=seuil; //valeur par defaut
// ...
}
Tableresultats::~Tableresultats()
{
}
我的班级像素:
#ifndef PIXEL_H
#define PIXEL_H
#include <iostream>
#include "Tableresultats.h"
using namespace std;
class Pixel
{
public:
...
protected:
private:
int m_couleurRGB[3]; //La couleur du pixel
int m_niveauGris; //Niveau gris
int m_posX; //reference X
int m_posY; //reference Y
};
#endif // PIXEL_H
我有其他文件,但我不明白为什么会遇到这个问题:
Pixel未在此范围内声明,第16行Tableresultats.h标题
如果我已声明#include <vector>
和#include "Pixel.h"
答案 0 :(得分:3)
Tableresultats.h
与Pixel.h
之间存在循环依赖关系(彼此包含)。
您必须通过正确使用前向声明来解决这个问题。
如果可能,请删除其中一个包含(根据您发布的Pixel.h
,它看起来不需要Tableresultats.h
的包含。)