其他类无法识别C ++ Custom Class

时间:2015-12-03 16:52:38

标签: c++

我有自己的.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);
                       ^

1 个答案:

答案 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中也可以这样做,但我不知道为什么要包含这些内容。