2016-08-05 10 views
-5

Ich habe eine Klasse wie unten deklariert, und ich bekomme immer "Segment heißt kein Typ" Fehler. Ich habe mir ähnliche Fragen angeschaut, aber ich finde keine Lösung für mein Problem. Irgendeine Hilfe? Danke im Voraus! :)"Benennt keinen Typ" Fehler C++

#ifndef ENTRANCE_H 
#define ENTRANCE_H 
#include "Segment.h" 
#include <vector> 
#include "Diodio.h" 


class Entrance 
{ 
    public: 
     Entrance(); 
     ~Entrance(); 
     void operate(); 


    protected: 
     Segment *givesEntryTo; 
     std::vector<Diodio> elBooths; 
      std::vector<Diodio> manBooths; 

    private: 
}; 

#endif // ENTRANCE_H 
+3

Wahrscheinlich haben Sie eine zirkuläre Abhängigkeit zwischen Ihren Headern. – molbdnilo

+0

Eine Vermutung: Beinhaltet Segment.h direkt oder indirekt Entrance.h? – aschepler

+0

Dies ist eine Klasse ** Definition **. Eine Klassendeklaration wäre 'class Entrance;'. – IInspectable

Antwort

-1

Sie können einen kreisförmigen vermeiden umfassen Problem durch eine Vorwärtsdeklaration einer Klasse anstelle eines #include mit:

#ifndef ENTRANCE_H 
#define ENTRANCE_H 
#include <vector> 
#include "Diodio.h" 

class Segment;  

class Entrance 
{ 
    public: 
     Entrance(); 
     ~Entrance(); 
     void operate(); 


    protected: 
     Segment *givesEntryTo; 
     std::vector<Diodio> elBooths; 
      std::vector<Diodio> manBooths; 

    private: 
}; 

#endif // ENTRANCE_H 

(Entrance.cpp oder zu #include "Segment.H" müssen dann nicht .)