2013-04-11 61 views
1

我有以下的文件,我不明白爲什麼它不工作,爲什麼我獲得錯誤並不在此範圍內聲明

「像素」並沒有在這一範圍內聲明

這裏頭:

#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 

我還有其他的文件,但我不明白爲什麼我有這樣的問題:

像素並不在此範圍內聲明的,行16 Tableresultats.h頭

如果我宣佈#include <vector>#include "Pixel.h"

回答

3

你甲肝e在Tableresultats.hPixel.h(它們彼此包含)之間的循環依賴關係。

您必須通過正確使用正向聲明來解決這個問題。

或者如果可能的話,刪除其中的一個(從您發佈的Pixel.h,它看起來不需要它包含Tableresultats.h)。

相關問題