इस सवाल का पहले से ही एक उत्तर है: < / P>
- 5 जवाब
मैं सी ++ के लिए अपेक्षाकृत नया हूँ , और मैंने इस बात के उत्तर के लिए बहुत कुछ देखा है, लेकिन मुझे एक संतोषजनक जवाब नहीं मिला।
मान लें कि मुझे
FSM नामक संरचना है अंततः मेरे कोड में,FSM के कई उदाहरण बनाया जा सकता है।FSM के गुणों में से एक हैint x जो स्थिर नहीं है,FSM का हर उदाहरणX। अब,
FSM के गुणों में से एक एक और संरचनापमाचिन है जिसेX इस तरह:struct एफएसएम {सार्वजनिक: int x; Int getX () {वापसी एक्स;} स्ट्रेट सबमाइन {शून्य रहित ()} {int जी = getX ();}; }; };यह निम्न त्रुटि देता है:
त्रुटि: 'FSM :: getX': गैर-स्थिर सदस्य फ़ंक्शन का अवैध कॉल
मेरा प्रश्न यह है,
सबमाचिन सदस्य काFSM है, इसलिए इसेFSM के सभी विशेषताओं के स्थानीय उदाहरणों तक पहुंच नहीं होनी चाहिए < / code>? और अगर नहीं, जब हमFSM का एक उदाहरण बनाते हैं, तो क्या हम अपने सभी सदस्यों का एक उदाहरण नहीं बनाते हैं i.e.submachine ? और यदि ऐसा है, तो हमें एक वस्तु बनाने की आवश्यकता क्यों है जो किonentry () की जरूरत है?मैं संकलक को मानता हूँ कि सही है, इसलिए मैं यह भी जानना चाहता हूं कि क्या यह काम करने का एक तरीका।
नोट: दुर्भाग्यवश, जब एक घटना बुलाया जाता है तो आंतरिक संरचनाओं (
सबमाचिन ) का उदाहरण तत्काल होता है और इस प्रकार मैं केवल प्रकार को परिभाषित कर सकता हूं, औरFSM ।मेरा प्रश्न है, सबमाइन एफएसएम का सदस्य है, इसलिए एफएसएम के सभी गुणों के स्थानीय उदाहरणों तक पहुंच होनी चाहिए, नहीं?
नहीं। जावा के विपरीत, आंतरिक कक्षा के ऑब्जेक्ट्स को बाहरी ऑब्जेक्ट का कोई अंतर्निहित संदर्भ नहीं है।
क्या हम अपने सभी सदस्यों या टामी का एक आशय नहीं बना रहेगा?
सबमाचिन एक प्रकार है, सदस्य चर नहीं है यदि आप एक सदस्य चर चाहते हैं, तो आपको ऐसा कुछ करना होगा: <पूर्व>struct FSM {struct submachine {...}; पमाचिन एसएएम; // सदस्य प्रकार के प्रकार submchine}};और यदि आप चाहते हैं कि
एसएम को उसकी मूल वस्तु "देखना" है, तो आपको इसे स्पष्ट रूप से पास करना होगा:संरचना एफएसएम {स्ट्रैट पमाचिन {एफएसएम और माता पिता; // माता-पिता सबपैचिन (एफएसएम एंड एफ) के संदर्भ: अभिभावक (एफ) {} // कंस्ट्रक्टर में प्रारंभिक संदर्भ}; पमाचिन एसएएम; एफएसएम (): एस.एम. (* यह) {} // एसआईआर को प्रारंभ करने के समय हमारे पास संदर्भ दें;ध्यान दें कि एक ही सिद्धांत
पमाचिन के उदाहरणों के लिए लागू होता है जो सदस्य चर नहीं हैं यदि आप चाहते हैं कि वे एकFSM उदाहरण तक पहुंच सकें, तो आपको एक संदर्भ को पास करना होगा।ध्यान दें कि आप एक संदर्भ के बजाय एक संकेतक का उपयोग कर सकते हैं । वास्तव में, एक सूचक कई मामलों में अधिक लचीलापन प्रदान करता है।
Comments
Post a Comment