Итак, я ожидаю, что это будет простой ответ, но я уже некоторое время взламывал его и, похоже, не могу решить эту проблему. Поэтому у меня есть определенный класс, Intersection
, который при включении в любой другой заголовок дает мне:
error C2061: syntax error : identifier 'Intersection'
Это мой заголовок пересечения:
#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
Теперь, если я попытаюсь использовать этот класс в другом месте, я получу ошибку. Например:
#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
Особенно в конструкторе Road
(и любых других классах, которые ссылаются на Intersection
). Я не думаю, что это проблема синтаксиса, поскольку Coord
- это другой класс, определенный таким же образом, и компилятор (VS 2008) не жалуется на это. Это просто Intersection
, в частности, это доставляет мне эту проблему. : /
Я отмечаю это как домашнее задание - для этого оно и нужно, хотя это просто ошибка, от которой я не могу избавиться, а не часть проблемы.
Мысли?