मैं एक गेम बना रहा हूं और मेरे पास Man
नामक एक कक्षा है और Block
नामक एक वर्ग को उनके कोड में एक दूसरे की आवश्यकता है, लेकिन वे अलग-अलग फाइलों में हैं। क्या कक्षा को "पूर्वनिर्धारित" करने का कोई तरीका है? उद्देश्य-सी के @class मैक्रो की तरह?सी ++: दो कक्षाओं को एक-दूसरे की आवश्यकता है
उत्तर
इसे एक परिपत्र निर्भरता कहा जाता है। कक्षा में Two.h
class One;
class Two {
public:
One* oneRef;
};
और कक्षा में One.h
class Two;
class One {
public:
Two* twoRef;
};
"वर्ग एक," और "कक्षा दो;" निर्देश क्रमशः एक वर्ग नाम "वन" और "दो" आवंटित करते हैं; लेकिन वे नाम से परे किसी अन्य विवरण को परिभाषित नहीं करते हैं। इसलिए आप संकेत वर्ग बना सकते हैं, लेकिन आप शामिल नहीं कर सकते तो जैसे पूरी कक्षा:
class One;
class Two : public One {
};
class Three {
public:
One one;
};
कारण ऊपर दो उदाहरण संकलन नहीं होगा क्योंकि जबकि संकलक जानता है कि वहाँ एक वर्ग से एक है, यह 'नहीं करता है टी फ़ील्ड, विधियों या आभासी तरीकों के बारे में नहीं जानते, कक्षा वन में हो सकता है क्योंकि केवल नाम परिभाषित किया गया था, वास्तविक वर्ग परिभाषा नहीं।
हां।
class Man;
यह Man
एक "अपूर्ण प्रकार" के रूप में घोषित करेंगे। आप इसके लिए पॉइंटर्स या संदर्भ और कुछ अन्य चीजें घोषित कर सकते हैं, लेकिन आप इसका उदाहरण नहीं बना सकते हैं या इसके सदस्यों तक पहुंच नहीं सकते हैं। यह एक पूर्ण वर्णन नहीं है कि आप क्या कर सकते हैं और अधूरे प्रकार से नहीं कर सकते हैं, लेकिन यह सामान्य विचार है।
ध्यान देने योग्य महत्वपूर्ण है, आप पूर्ण प्रकार बाद में जारी रख सकते हैं और पहुंच प्राप्त कर सकते हैं। आप हेडर में अधूरे प्रकारों का उपयोग कर सकते हैं और इसके उपयोग के लिए सीपीपी में पूर्ण शीर्षलेख परिभाषा शामिल कर सकते हैं। –
- 1. "प्रॉक्सी कक्षाओं पर WebServiceBindingAttribute की आवश्यकता है"
- 2. कोड प्रथम कक्षाओं को नेविगेशन गुणों की आवश्यकता क्यों है?
- 3. अनलोड गतिशील लाइब्रेरी को दो dlclose() कॉल की आवश्यकता है?
- 4. सी #: सार कक्षाओं को इंटरफेस को लागू करने की आवश्यकता है?
- 5. लेवलडीबी को दो से अधिक स्तरों की आवश्यकता क्यों है?
- 6. कक्षाओं के लिए सी # में एक अच्छा डिजाइन पैटर्न क्या है जो अन्य वर्गों को संदर्भित करने की आवश्यकता है?
- 7. दो चरण लुकअप - स्पष्टीकरण की आवश्यकता
- 8. प्रिंटवाइटर की आवश्यकता क्यों है?
- 9. हमें संरचना की आवश्यकता क्यों है? (सी #)
- 10. हमें सी # प्रतिनिधियों की आवश्यकता क्यों है
- 11. सी ++ में विनाशकों की आवश्यकता क्यों है?
- 12. Magento को दो उत्पाद विवरणों की आवश्यकता कैसे रोकें?
- 13. कैबल इंस्टॉल को सी लाइब्रेरी की आवश्यकता है: विंडोज
- 14. मुझे मार्शल को कॉल करने की आवश्यकता है। सी #
- 15. क्या सी ++ मानक को बाइनरी मशीन की आवश्यकता होती है?
- 16. ओओपी सी ++ मदद की आवश्यकता
- 17. कॉमन्स सीएलआई को समूहों की आवश्यकता है
- 18. क्या वसंत वेबफ्लो नियंत्रक कक्षाओं की आवश्यकता को खत्म कर सकता है?
- 19. क्यों कुछ कक्षाओं को इसके उदाहरण बनाते समय "नया" शब्द की आवश्यकता नहीं है?
- 20. क्या व्युत्पन्न कक्षाओं में सभी आभासी कार्यों को लागू करने की आवश्यकता है?
- 21. स्टेटिक आंतरिक कक्षाओं को एनोटेशन के लिए आयात की आवश्यकता है
- 22. पृथक स्टोरेज को सहेजने और लोड करने की छवि दो बार सहेजने की आवश्यकता है
- 23. सी ++ में कक्षाओं की सरणी कैसे बनाएं?
- 24. सी #: दो इंटरफेस को लागू करने वाले तर्कों की आवश्यकता वाले कार्यों के लिए पसंदीदा पैटर्न
- 25. क्यों gnu readline मुझे दो बार नियंत्रण सी हिट करने की आवश्यकता है?
- 26. लिनक्स ग्लिब को pkg-config की आवश्यकता है और pkg-config को glib की आवश्यकता है?
- 27. एएसपी.नेट सी #, कुछ होने के लिए दो बार बटन दबाए जाने की आवश्यकता है
- 28. सी ++: दो वैक्टरों की तुलना
- 29. टाइपफ़ोफ़ की आवश्यकता क्यों है?
- 30. जावा में कक्षाओं की सूची
लगता है कि आप जो चाहते हैं वह एक आगे की घोषणा है। BlockDude के लिए – mooware
+1। –