2011-10-29 58 views
-1

我有2個類中不同的命名空間和兩者需要包括相同類image.h的,但是當我包括在同一時間我得到一個錯誤。在這裏我的課:預防多發性包括在C++

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_ */ 

主應用程序類:包括圖像/ image.h的和過濾器/ 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_ */ 

感謝所有幫助

+5

呃......什麼錯誤? Image.h裏面怎麼樣? –

+0

你可以顯示Image.h的代碼嗎?它使用'#ifndef IMAGE'嗎?它是什麼類型的錯誤? –

+0

我更新我的問題 – cagryInside

回答

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

您忘記了命名空間。

我看不出有任何的#include「PGMImage.h」 在哪兒呢?什麼是PGMImage?

爲什麼image.h的存在包括對image.h的?

+0

我已經這樣做了,但我仍然得到一個錯誤,PGMImage來自別的地方不從圖像 – cagryInside

+0

我們需要更多的信息繼承... –

+0

你現在得到什麼錯誤?我很肯定它不會是'''圖像'不再是一種類型'。 – msandiford

0

你可能沒有多的問題包括但命名空間,嘗試從applyFilter方法返回Images::Image

+0

沒有它確定我寫這裏錯了。我仍然有同樣的問題 – cagryInside

+0

@cagryInside:即然而正是你的錯誤指向,請確保您有'Image'沒有其他的引用,而無需指定的命名空間。另外,請記下Tomalak的評論,這是一個非常好的提示。 – KillianDS