【问题标题】:Error was not declared in this scope未在此范围内声明错误
【发布时间】:2013-04-11 09:18:10
【问题描述】:

我有以下文件,但我不明白为什么它不起作用以及我为什么获得

“像素”未在此范围内声明

这里是标题:

#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 &lt;vector&gt;#include "Pixel.h"

【问题讨论】:

    标签: c++ scope


    【解决方案1】:

    Tableresultats.hPixel.h 之间存在循环依赖关系(它们相互包含)。

    您必须通过正确使用前向声明来解决这个问题。

    如果可能,或者删除其中一个包含(从您发布的Pixel.h 来看,它看起来不需要包含Tableresultats.h)。

    【讨论】: