तक पहुंचने वाले आंतरिक वर्ग मैं सी ++ के लिए अपेक्षाकृत नया हूं, और मैंने इस चीज़ के उत्तर के लिए बहुत कुछ देखा है लेकिन मुझे कभी भी संतोषजनक उत्तर नहीं मिला।बाहरी वर्ग
मान लें कि मेरे पास FSM
नामक एक संरचना है। आखिर में मेरे कोड में, FSM
के कई उदाहरण बनाए जा सकते हैं। FSM
की विशेषता int X
है जो स्थिर नहीं है, FSM
के प्रत्येक उदाहरण के पास X
का अपना मान होना चाहिए।
Error: 'FSM::getX' : illegal call of non-static member function
मेरा प्रश्न है:
struct FSM
{
public:
int x;
int getX(){return x;}
struct submachine
{
void onentry() {int g = getX();};
};
};
यह निम्न त्रुटि देता है:
अब, FSM
की विशेषताओं में से एक एक और संरचना submachine
जो इस तरह X
का मूल्य को पढ़ने के लिए की जरूरत है , submachine
FSM
का सदस्य है, तो क्या इसे FSM
के सभी विशेषताओं के स्थानीय उदाहरणों तक पहुंच नहीं है? और यदि नहीं, तो जब हम FSM
का उदाहरण बनाते हैं, तो क्या हम अपने सभी सदस्यों का उदाहरण नहीं बनायेंगे i.e. submachine
? और यदि ऐसा है, तो हमें onentry()
की आवश्यकता वाले ऑब्जेक्ट को बनाने की आवश्यकता क्यों है?
मुझे लगता है कि संकलक सही है, इसलिए मैं यह जानना चाहूंगा कि यह काम करने का कोई तरीका है या नहीं।
नोट: दुर्भाग्यवश, आंतरिक संरचनाओं के उदाहरण (submachine
) तत्काल होते हैं जब कोई ईवेंट कहा जाता है और इस प्रकार मैं केवल प्रकार को परिभाषित कर सकता हूं, और FSM
में उनके लिए वस्तुओं को तत्काल नहीं कर सकता।
यदि कोई तरीका है जो मैं पूरा करना चाहता हूं जो मैं पूरा करना चाहता हूं? – Kam
डाउनवॉटर: साझा करने की देखभाल? –
(देरी के लिए खेद है, लिंक ढूंढ रहा था)। नेस्टेड कक्षाएं सदस्य हैं और बाहरी वर्ग तक किसी अन्य सदस्य की तरह पहुंच सकते हैं, [डीआर 45] (http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#45) का हिस्सा 2003 –