【发布时间】:2010-08-01 16:26:39
【问题描述】:
我在 MainController.h 中收到此错误“','令牌之前的预期类名”和“'{'令牌之前的预期类名” 我想我会根据需要包含文件,还在所有标题中执行#ifndef HEADER_H #define HEADER_H 等,在我编写 MainController 类之前我没有错误。 我不知道为什么会出现这个错误。我在这里错过了什么?
我有 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);
};
【问题讨论】:
-
你不是字面上写
#ifndef HEADER_H,是吗?每个标头的宏名称需要不同。 -
不要在头文件中写
using namespace;请尝试发布真实有效的代码:您的代码中既没有声明命名空间cv,也没有声明类型Mat,并导致与问题无关的其他编译错误。 -
为什么我不应该在标题中写“使用命名空间”?
标签: c++