2011-10-27 12 views
1

私はたくさん見て、stackoverflowや他のウェブサイトで見つけたものを試しましたが、これを修正する方法はまだ分かりません..."コンパイル時に '{' token"の前に予期されるクラス名

メインC++ファイル:

#include "Array2D.h" 
... 

source.h source.cpp

#include "sources.h" 
#include "fft_windows.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); 
... 

私は私が見つけたすべてのものを試したし、いくつかの理由で、私はまだこのエラーが出ますFeatures.hのclass Features : public Array2D {行にあります。

ご存じですか?

+0

'sources.h'または'ソース.h'? –

+2

Features.hはそれがArray2Dであることを知っていません。 –

+0

sources.h!それはタイプミスでした。 – srsbsns

答えて

3

Array2Dはクラスではありません。 Array2D<int>がある、またはArray2D<float>

1

Array2DArray2D.hファイルで宣言されていて、#include"Array2D.h"なしFeatures.hにそのtemplate classを使用しています。そのファイルを前述のように含め、再帰的なインクルードがないことを確認するためにFeature.hの包含を取り除いてください。

また、,<char><T>などのテンプレート引数を使用すると、Array2Dを使用する必要があります。

1

Array2D.hを含める必要がありFeatures.hまず、第二あなたは無限の取得はそれで再帰を含め、第三あなたはArray2Dから継承する場合、テンプレートパラメータを指定する必要があります。

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

ありがとう、unfortuatelly私は1つの答えしか受け入れることができません。まだ私は担当者がいないので、あなたをアップアップすることはできません.. – srsbsns

+0

@srsbsns:Np、SOの周りを回って、担当者を集めて、 。 :) – Xeo

関連する問題