C++ में फॉरवर्ड डिक्लेरेशन (forward declaration) का उपयोग कब किया जा सकता है?
सभी को नमस्ते! मैं C++ सीख रहा हूँ और लगातार "forward declaration" (पूर्व घोषणा) शब्द से टकराता हूँ। लगता है कि मैं समझ गया हूँ कि यह क्या है, लेकिन यह स्पष्ट नहीं है कि इसका उपयोग कब *करना चाहिए* और कब यह केवल चीजों को जटिल बनाएगा।
उदाहरण के लिए, मेरे पास दो क्लासेस हैं: `A` और `B`। क्लास `A` में `B` का एक पॉइंटर है, और क्लास `B` में `A` का एक ऑब्जेक्ट वैल्यू द्वारा है। मैं कुछ इस तरह लिखने की कोशिश कर रहा हूँ:
```cpp
// A.h
#include "B.h"
class A {
B* ptr;
};
// B.h
#include "A.h"
class B {
A obj;
};
```
स्वाभाविक रूप से, यह साइक्लिक डिपेंडेंसी के कारण कंपाइल नहीं होता है। मैंने सुना है कि इस चक्र को तोड़ने के लिए forward declaration का उपयोग किया जा सकता है। लेकिन वास्तव में कैसे? और यह किन अन्य स्थितियों में लागू होता है?
साथ ही, मैंने देखा है कि हेडर फाइलों में कभी-कभी परिभाषा से पहले `class MyClass;` लिखा जाता है।