在C ++中防止多个包含

时间:2011-10-29 23:04:47

标签: c++ header header-files

我在不同的命名空间中有2个类,它们都需要包含相同的Image.h类,但是当我同时包含时会出现错误。在这里我的课程:

FilterManager.h:

#ifndef FILTERMANAGER_H_
#define FILTERMANAGER_H_

#include "../Images/Image.h"
namespace Filter {

class FilterManager {
public:
    Image* applyFilter(int filterType, PGMImage *pgmImage);

};

} /* namespace Filter */
#endif /* FILTERMANAGER_H_ */

主要应用程序类:这包括Images / Image.h和Filter / FilterManager.h同时出现错误。

#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <stdio.h>
#include "Images/Image.h"
#include "Filter/FilterManager.h"


using namespace std;

int main() {

    //new typename ImageIO::ImageIO;

    Images::Image *Image = NULL;

    Filter::FilterManager::getInstance();

    pgmImage = imageIO->readPGM("Resources/house.256.pgm");

    return 0;
}

和Image.h类

#ifndef IMAGE_H_
#define IMAGE_H_

#include "Image.h"



namespace Images {

class Image {
public:
    Image();
    virtual ~Image();


private:
    int** imatrix(int nrl,int nrh,int ncl,int nch);
};

} /* namespace Image */
#endif /* IMAGE_H_ */

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

class FilterManager {
public:
   Images::Image* applyFilter(int filterType, PGMImage *pgmImage);
};

你忘记了命名空间。

我没有看到任何#include“PGMImage.h” 它在哪里?什么是PGMImage?

为什么在Image.h中有一个包含到Image.h?

答案 1 :(得分:0)

您可能没有多个包含但有命名空间的问题,请尝试从Images::Image方法返回applyFilter