मुझे पता है कि इससे पहले के प्रश्न पूछे गए हैं लेकिन मेरे शोध करने के बाद भी मुझे परिपत्र शीर्षलेख के बारे में प्रश्न हैं।सी ++ सर्कुलर हेडर में
//FooA.h
#ifndef H_FOOA
#define H_FOOA
#include "foob.h"
class FooA{
public:
FooB *fooB;
};
//FooB.h
#ifndef H_FOOB
#define H_FOOB
class FooA;
class FooB{
public:
FooA *fooA;
};
अब यदि मेरे पास दो परिपत्र निर्भरताएं हैं तो इस तरह मैंने लोगों को स्टैक ओवरफ्लो पर समस्या को हल करने के तरीके को देखा है। इस के साथ मेरी केवल समस्या यह है कि मेरी main.cpp में मैं पहली बार fooa.h शामिल करना चाहिए और उसके बाद
//main.cpp the right way
#include "fooa.h"
#include "foob.h"
//main.cpp that will surely get a compile error
#include "foob.h"
#include "fooa.h"
अब मेरे सवाल है foob.h "वहाँ अग्रेषित करने के लिए एक तरीका है कि होगा में इन कक्षाओं की घोषणा एक रास्ता है मुझे उस आदेश के बारे में परवाह करने की अनुमति न दें जिसमें मैं अपने main.cpp में हेडर फाइलें शामिल करता हूं? "
जवाब के रूप में में ही बताया है, आप दोनों फाइलों में एक आगे घोषणा कर सकते हैं। यदि स्थिति अधिक जटिल थी, तो आप 'foob.h' से' fua.h "शामिल कर सकते हैं, जो आपके इच्छित आदेश को गारंटी देगा। –
उदाहरण कोड में शामिल करने में कुछ भी परिपत्र नहीं है। यदि आप लापता # endif सबकुछ जोड़ते हैं तो ठीक है। आपको क्या संकलन त्रुटि मिल रही है? –