我有自己的.cpp和.h文件中的Road和Car类。 我在Car标题中包含Road类的.h文件。 我使用Road类作为Car类中函数的参数。 我在路上的汽车类中有静态变量。
编译器无法识别Car Class中的Road类型,我无法弄清楚原因。
Road.h
#ifndef ROAD_H
#define ROAD_H
#include <iostream>
#include "car.h"
using namespace std;
class Road
{
public:
// class functions
private:
// member variables
};
#endif
Car.h
#ifndef CAR_H
#define CAR_H
#include <iostream>
#include "road.h"
using namespace std;
class Car
{
public:
// class functions
void enter_a_road(Road& r1, const short left_pos);
private:
// member variables
};
#endif
错误讯息:
In file included from Road.h:11:0,
from Road.cpp:6:
Car.h:68:23: error: 'Road' has not been declared
void enter_a_road(Road& r1, const short left_pos);
^
答案 0 :(得分:4)
你有一个循环依赖。解决问题的最快方法是使用forward declaration。
#include <iostream>
using namespace std;
class Road;
class Car
{
public:
// class functions
void enter_a_road(Road& r1, const short left_pos);
private:
// member variables
};
这是可以接受的,因为编译器不需要知道Road
的内部结构就可以编译函数声明。
可能在Road.h
中也可以这样做,但我不知道为什么要包含这些内容。