我在编写代码的时候,有两个文件Screen.h和Map.h。然后我在Screen.h中的类Screen里定义了一个结构体Data。Screen.h中定义完类Screen后先导入了Map.h,再在后面放了类函数的实现。Map.h中的一个函数声明中有把Screen::Data作为参数的类型,然后接下来就是其它头文件的导入,以及类函数的实现。我应该怎么做才能不引发语法错误?
我的代码类似下面这样子:
//in file Screen.h
//引入标准库
class Map;
class Screen{
public:
//定义了一些函数和成员变量
public:
struct Data{
//结构体定义
};
};
#include "Map.h"
//以及引入一些自己编写的头文件
//下面函数实现
Screen::Screen(){
//...
}
//in file Map.h
//引入标准库
class Screen;
class Map{
public:
//定义了一些函数和成员变量
public:
void print(const Screen::Data &data);//就是这里!提示Screen类只有前置声明,不能使用其内部的函数、结构体或成员变量
};
#include "Screen.h"
//以及引入一些自己编写的头文件
//下面是函数实现
void Map::print(const Screen::Data &data){
//...
}