Tôi đã làm việc với C++ trong một vài tuần, nhưng cơ chế đằng sau các tệp tiêu đề (hoặc trình liên kết mà tôi cho là?) Làm tôi bối rối. Tôi đã có thói quen tạo một tệp "main.h" để nhóm các tệp tiêu đề khác của tôi và giữ cho tệp main.cpp gọn gàng, nhưng đôi khi các tệp tiêu đề đó không thể tìm thấy tệp tiêu đề khác (mặc dù nó được khai báo trong "main.h"). Tôi có lẽ không giải thích nó rất tốt vì vậy đây là một phiên bản rút gọn của những gì tôi đang cố gắng để làm:Ai đó có thể giúp làm rõ cách hoạt động của tệp tiêu đề?
//main.cpp
#include "main.h"
int main() {
return 0;
}
-
//main.h
#include "player.h"
#include "health.h"
#include "custvector.h"
-
//player.h
#include "main.h"
class Player {
private:
Vector playerPos;
public:
Health playerHealth;
};
-
//custvector.h
struct Vector {
int X;
int Y;
int Z;
};
-
//health.h
class Health {
private:
int curHealth;
int maxHealth;
public:
int getHealth() const;
void setHealth(int inH);
void modHealth(int inHM);
};
Tôi sẽ không bao gồm health.cpp vì nó hơi dài (nhưng không hoạt động), nó có #include "health.h"
.
Dù sao, trình biên dịch (Code :: Blocks) phàn nàn rằng "player.h" không thể tìm thấy loại 'Health' hoặc 'Vector'. Tôi nghĩ rằng nếu tôi sử dụng #include "main.h"
vào "player.h" nó sẽ có thể tìm thấy các định nghĩa cho Health
và Vector
cảm giác chúng được bao gồm trong "main.h". Tôi nghĩ rằng họ sẽ sắp xếp đường hầm theo cách của họ mặc dù (player.h -> main.h -> health.h). Nhưng điều đó không hiệu quả lắm. Có một số loại biểu đồ hoặc video có thể làm rõ cách thức này nên được thiết lập không? Google không giúp được gì nhiều (cũng không phải sách của tôi).
Nó không trả lời câu hỏi của bạn, nhưng bạn nên thay đổi cấu trúc Vector thành một tên khác. Nó sẽ phát triển khó hiểu khi bạn bắt đầu sử dụng std :: vector, và một điểm trong không gian 3D không thực sự là một vectơ. – reuscam
Cảm ơn, tôi sẽ làm điều đó. Và bạn nói đúng, nó nên là Point hoặc một cái gì đó. –
Thực ra, một véc-tơ được xác định chỉ bằng một điểm. – Spidey