Vì vậy, tôi mong đợi điều này kết thúc là một câu trả lời đơn giản, nhưng tôi đã hack nó một lúc rồi để khắc phục sự cố này. Vì vậy, tôi có một lớp học đặc biệt, Intersection
, rằng khi có trong bất kỳ tiêu đề khác mang lại cho tôi:Tiêu đề do người dùng tạo C2061: Lỗi cú pháp: Mã định danh 'classname'
error C2061: syntax error : identifier 'Intersection'
này được tiêu đề Intersection tôi:
#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
Bây giờ, nếu tôi cố gắng để sử dụng lớp này ở nơi khác, tôi nhận được lỗi. Ví dụ:
#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
Riêng tại Road
constructor (và bất kỳ các lớp khác mà tham khảo Intersection
). Tôi không nghĩ rằng đó là một vấn đề cú pháp, vì Coord
là một lớp khác, được định nghĩa theo cách tương tự, và trình biên dịch (VS 2008) không phàn nàn về nó. Nó chỉ là Intersection
đặc biệt là đem lại cho tôi sự cố này. :/
Tôi đang gắn thẻ bài tập về nhà - đó là nội dung của nó, mặc dù đây chỉ là lỗi mà tôi không thể loại bỏ hơn là một phần của sự cố.
Suy nghĩ?
Dường như bạn cần chuyển tiếp khai báo 'lớp giao lộ;' trong tệp ROAD_H. – GWW
Thú vị. Điều đó dường như đã làm điều đó. Bạn có thể giải thích tại sao nó hoạt động trong khi bao gồm toàn bộ tiêu đề không, và tại sao chỉ có lớp đó dường như có vấn đề? Làm điều đó trong một câu trả lời và tôi sẽ sẵn sàng cung cấp cho bạn kiểm tra. :) – kcoppock