"预期的班级名称' {'令牌"编译时

时间:2011-10-27 11:48:46

标签: c++ compiler-errors

我看了很多,尝试了一些我在stackoverflow和其他网站上找到的东西,但我仍然无法弄清楚如何解决这个问题......

主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中收到此错误...

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

Array2D不是一个班级。 Array2D<int>是,或Array2D<float>

答案 1 :(得分:1)

Array2DArray2D.h文件中声明,您在template class中使用Features.h而没有#include"Array2D.h"。包含该文件,并删除包含Feature.h以确保没有递归包含。

此外,Array2D应与模板参数一起使用,例如<int><char><T>等。

答案 2 :(得分:1)

首先,Features.h需要包含Array2D.h,其次是你获得无限包含递归,第三,你需要在继承Array2D时指定模板参数:

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