Benutzer-Erstellte Header Verursacht C2061: Syntaxfehler : Bezeichner 'classname'

So, ich habe irgendwie erwarten, dass dies am Ende als eine einfache Antwort, aber ich habe-hacking auf es für eine Weile jetzt, und kann nicht scheinen, um dieses Problem zu beheben. Also ich habe eine bestimmte Klasse Intersection, dass, wenn in einer beliebigen anderen header gibt mir:

error C2061: syntax error : identifier 'Intersection'

Dies ist mein Schnittpunkt-header:

#ifndef INTERSECTION_H
#define INTERSECTION_H

#include "Coord.h"
#include "Road.h"
#include "TrafficLight.h"

class Intersection {
private:
    int id;
    Coord * midPoint;
    Road * northRoad;
    Road * eastRoad;
    Road * westRoad;
    Road * southRoad;
    TrafficLight * trafficLight;
public:
    Intersection(int, Coord *, Road *, Road *, Road *, Road *);
    ~Intersection();
    void transitionTrafficLight();
    int getId();
    Road * getNorthRoad();
    Road * getEastRoad();
    Road * getWestRoad();
    Road * getSouthRoad();
    TrafficLight * getTrafficLight();
};

#endif

Nun, wenn ich Versuch, diese Klasse zu benutzen anderswo, bekomme ich die Fehlermeldung. Zum Beispiel:

#ifndef ROAD_H
#define ROAD_H

#include "Coord.h"
#include "Intersection.h"
#include <string>

class Road {

public:
    enum LaneCount { TWO_LANE = 2, FOUR_LANE = 4 };
    Road(std::string, Coord *, Coord *, LaneCount, Intersection *, Intersection *, int);
//shortened

Besonders am Road Konstruktor (und alle anderen Klassen, die Referenz -Intersection). Ich glaube nicht, dass es ein syntax-problem, wie Coord ist eine weitere Klasse definiert, in der gleichen Weise, und der compiler (VS 2008) nicht beschweren. Es ist nur Intersection insbesondere, dass mir diese Mühe. :/

Ich bin tagging es Hausaufgaben-es ist, was es ist, auch wenn dies nur ein Fehler kann ich nicht loswerden, eher als Teil des Problems.

Gedanken?

  • Es sieht aus wie Sie brauchen, um vorwärts zu deklarieren class Intersection; im ROAD_H-Datei.
  • Interessant. Das scheint es erledigt zu haben. Können Sie erklären, warum das funktioniert zwar inklusive des gesamten headers nicht, und warum nur diese Klasse scheint ein problem zu haben? Tun Sie es in eine Antwort und ich werde Ihnen gern die Prüfung. 🙂
InformationsquelleAutor kcoppock | 2011-06-29
Schreibe einen Kommentar