2011-10-27 59 views
1

我看了很多,嘗試了一堆我發現在stackoverflow和其他網站上的東西,但我仍然無法弄清楚如何解決這個問題...「編譯期間'{'token''之前預期的班級名稱

主C++的文件:source.cpp

#include "sources.h" 
#include "fft_windows.h" 
... 

source.h

#include "Array2D.h" 
... 

Array2D.h

#ifndef ARRAY2D_H_ 
#define ARRAY2D_H_ 

#include <cassert> 
#include "Features.h" 

template <class T> class Array2D{ 
... 
}; 
#endif 

Features.h

#ifndef FEATURES_H_ 
#define FEATURES_H_ 


#include <string> 

using namespace std ; 


class Features : public Array2D { 
... 
}; 
#endif 

fft_window.h(在fft_window.cpp定義的函數聲明)

//#include "Array2D.h" 
template <class T>class Array2D; 

void random_example(unsigned int i, Array2D <double> &arr); 
... 

我嘗試了一切,我發現出於某種原因,我仍然得到這個錯誤在class Features : public Array2D {行的Features.h中...

任何想法?

+0

'sources.h'或'源.h'? –

+2

Features.h不知道這是一個Array2D,你沒有包含。 –

+0

sources.h!那是一個錯字。 – srsbsns

回答

3

Array2D不是一類。 Array2D<int>是,或Array2D<float>

1

Array2DArray2D.h文件中聲明你正在使用template classFeatures.h沒有#include"Array2D.h"。如上所述包含該文件,並刪除包含Feature.h以確保沒有遞歸包含。

此外,Array2D應與模板參數一起使用,如<int>,<char>,<T>等。

1

首先,Features.h需要包括Array2D.h,第二個你得到無限包括與遞歸,第三你需要指定模板參數從Array2D繼承時:

class Features : public Array2D<int> { 
//     example --- ^^^ 
+0

謝謝,不幸的是,我只能接受一個答案,我甚至不能贊成你,因爲我還沒有代表呢.. – srsbsns

+0

@srsbsns:Np,只是漫遊這樣,收集代表,並回來,當你有足夠的時間。 :) – Xeo

相關問題