我已经用C++工作了好几周了,但是头文件(或者我认为的链接器)背后的机制让我感到困惑.我已经习惯于创建一个"main.h"来分组我的其他头文件并保持main.cpp整洁,但有时这些头文件抱怨无法找到不同的头文件(即使它已声明在"main.h"中.我可能没有很好地解释它,所以这是我正在尝试做的简略版本:
//main.cpp
#include "main.h"
int main() {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
-
//main.h
#include "player.h"
#include "health.h"
#include "custvector.h"
Run Code Online (Sandbox Code Playgroud)
-
//player.h
#include "main.h"
class Player {
private:
Vector playerPos;
public:
Health playerHealth;
};
Run Code Online (Sandbox Code Playgroud)
-
//custvector.h
struct Vector {
int X;
int Y;
int Z;
};
Run Code Online (Sandbox Code Playgroud)
-
//health.h
class Health {
private:
int curHealth;
int maxHealth;
public:
int getHealth() const;
void setHealth(int inH);
void modHealth(int inHM);
};
Run Code Online (Sandbox Code Playgroud)
我不会包括health.cpp,因为它有点冗长(但确实有效),它确实有#include "health.h".
无论如何,编译器(Code :: Blocks)抱怨"player.h"找不到类型'Health'或'Vector'.我认为,如果我使用#include "main.h""player.h",它将能够找到定义Health并Vector感觉它们包含在"main.h"中.我想他们会按照自己的方式进行隧道(player.h - …