मैं अब कुछ हफ्तों के लिए सी ++ के साथ काम कर रहा हूं, लेकिन हेडर फाइलों (या लिंकर मुझे लगता है?) के पीछे तंत्र ने मुझे बिल्ली से बाहर कर दिया है। मुझे अपनी अन्य शीर्षलेख फ़ाइलों को समूहित करने के लिए "main.h" बनाने की आदत है और main.cpp को साफ रखें, लेकिन कभी-कभी उन हेडर फाइलें एक अलग शीर्षलेख फ़ाइल खोजने में सक्षम नहीं होने के बारे में शिकायत करती हैं (भले ही इसे घोषित किया गया हो "main.h" में)। शायद मैं इसे बहुत अच्छी तरह से समझा नहीं कर रहा हूँ इसलिए यहाँ मैं क्या कर रहा हूँ के एक संक्षिप्त संस्करण है:क्या कोई यह स्पष्ट करने में सहायता कर सकता है कि शीर्षलेख फ़ाइलें कैसे काम करती हैं?
//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);
};
मैं health.cpp शामिल नहीं करूंगा क्योंकि यह थोड़ा लंबा है (लेकिन काम करता है), इसमें #include "health.h"
है।
वैसे भी, कंपाइलर (कोड :: ब्लॉक) शिकायत करता है कि "player.h" प्रकार 'स्वास्थ्य' या 'वेक्टर' नहीं ढूंढ सकता है। मैंने सोचा कि अगर मैंने #include "main.h"
को "player.h" में इस्तेमाल किया है तो यह Health
और Vector
के लिए परिभाषाओं को समझने में सक्षम होगा, वे "main.h" में शामिल हैं। मैंने सोचा कि वे चाहते हैं कि वे अपने तरीके से सुरंग की तरह हों (player.h -> main.h -> health.h)। लेकिन यह बहुत अच्छा काम नहीं किया। क्या कोई ऐसा चित्र या वीडियो है जो स्पष्ट कर सकता है कि इसे कैसे स्थापित किया जाना चाहिए? Google बहुत मदद नहीं कर रहा था (न ही मेरी पुस्तक)।
यह आपके प्रश्न का उत्तर नहीं देता है, लेकिन आपको वेक्टर संरचना को एक अलग नाम में बदलना चाहिए। जब आप std :: vector का उपयोग शुरू करते हैं तो यह भ्रमित हो जाएगा, और 3 डी स्पेस में एक बिंदु वास्तव में एक वेक्टर नहीं है। – reuscam
धन्यवाद, मैं यह करूँगा। और आप सही हैं, यह बिंदु या कुछ होना चाहिए। –
दरअसल, एक वेक्टर को केवल एक बिंदु से परिभाषित किया जाता है। – Spidey