2010-08-01 59 views
0

我收到此错误“期望的类名称之前”,“标记”和“期望的类名称之前' MainController.h 我认为我包含所需的文件,还在所有头文件中执行#ifndef HEADER_H #define HEADER_H等,直到我编写MainController类为止,我没有任何错误。 我不知道为什么会出现此错误。我在这里错过了什么?C++中的多继承,不同的文件:“期望的类名称之前”,“标记”

我有N4GestureRecognizer.h:

class N4GestureRecognizer; 
class N4GestureRecognizerDataSource{ /*it uses N4GestureRecognizer*/ }; 
class N4GestureRecognizerDelegate{ }; 
class N4GestureRecognizer { 
...  
}; 

N4FingerTipGestureRecognizer.h

#include "N4GestureRecognizer.h" 
class N4FingerTipGestureRecognizer; 

class N4FingerTipGestureRecognizerDelegate : public N4GestureRecognizerDelegate{ 
public: 
    virtual void fingerTipGestureRecognizerCallback(N4FingerTipGestureRecognizer *recognizer) = 0; 
}; 
class N4FingerTipGestureRecognizer : public N4GestureRecognizer{ 
...  
}; 

而且MainController.h

#include "N4GestureRecognizer.h" 
#include "N4FingerTipGestureRecognizer.h" 

using namespace cv; 

//******Error is in the next line****** 
class MainController : public N4GestureRecognizerDatasource, public N4FingerTipGestureRecognizeDelegate{ 
protected: 
    Mat image; 
public: 
    /*virtual*/ Mat gestureRecognizerNeedsImageFrame(N4GestureRecognizer *recognizer); 
    /*virtual*/ void fingerTipGestureRecognizerCallback(N4FingerTipGestureRecognizer *recognizer); 

}; 
+2

你不是*字面上写* #ifndef HEADER_H',是吗?每个标题的宏名称需要不同。 – Thomas 2010-08-01 16:28:36

+0

不要在头文件中使用'namespace';并且请尝试发布实际的工作代码:在您的代码中声明名称空间'cv'和类型'Mat',并导致与该问题无关的其他编译错误。 – Philipp 2010-08-01 16:36:21

+0

为什么我不应该在头文件中使用“使用名称空间”? – nacho4d 2010-08-01 16:41:36

回答

1

有似乎是在你的代码中有两处错别字:

  1. N4GestureRecognizer.h你有N4GestureRecognizerDataSource,但你尝试有MainController继承自N4GestureRecognizerDatasource;请注意0​​中的S的不同情况。
  2. In N4FingerTipGestureRecognizer.h您有N4FingerTipGestureRecognizerDelegate,但您尝试让MainController继承自N4FingerTipGestureRecognizeDelegate;请注意在Delegate之前丢失的r
+0

不使用很长名字的好理由。 – 2010-08-01 16:32:06

+0

...并使用自动完成的编辑器/ IDE。 – Philipp 2010-08-01 16:37:23

+0

真是愚蠢!我。大声笑。谢谢 – nacho4d 2010-08-01 16:40:09

1

假设你在上面粘贴的源是真正的文本源中包含的问题是class N4GestureRecognizerDataSourcepublic N4GestureRecognizerDatasource