Je reçois cette erreur "Nom de classe attendu avant", "jeton" et "Nom de classe attendu avant" {"jeton" dans MainController.h Je pense que je suis en incluant des fichiers comme nécessaire, en faisant aussi #ifndef HEADER_H #define HEADER_H, etc. dans tous les en-têtes, je n'ai eu aucune erreur jusqu'à ce que j'aie écrit la classe de MainController. Je ne sais pas pourquoi cette erreur apparaît. Qu'est-ce que j'oublie ici?multi-héritage en C++, différents fichiers: "Nom de classe attendu avant", "token"
Je 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{
...
};
Et 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);
};
Vous n'écrivez pas littéralement «#ifndef HEADER_H», n'est-ce pas? Le nom de la macro doit être différent pour chaque en-tête. – Thomas
N'écrivez pas 'using namespace' dans les fichiers d'en-tête; et s'il vous plaît essayez de poster du vrai code de travail: ni l'espace de noms «cv» ni le type «Mat» ne sont déclarés dans votre code et provoquent des erreurs de compilation supplémentaires qui ne sont pas liées au problème. – Philipp
Pourquoi je ne devrais pas écrire "using namespace" dans les en-têtes? – nacho4d