हैलो मैं सोच रहा हूं कि सी ++ मानक हमें बाहरी वर्ग के निजी क्षेत्रों तक पहुंचने के लिए नेस्टेड कक्षाओं में क्यों अनुमति देता है, जबकि यह बाहरी वर्ग के आंतरिक वर्ग के निजी क्षेत्रों तक पहुंचने से मना करता है। मैं समझता हूं कि यह उदाहरण:सी ++ बाहरी कक्षा का उपयोग आंतरिक वर्ग का निजी - क्यों मनाया गया
class OuterClass{
public:
class InnerClass{
public:
void printOuterClass(OuterClass& outer) {cout << outer.m_dataToDisplay;};
};
private:
int m_dataToDisplay;
};
, ठीक है, क्योंकि बात है, कि इनर वर्ग कभी कभी जटिल हो सकता है। लेकिन मुझे लगता है इस परिदृश्य पर भी ठीक है:
class Algorithm{
public:
class AlgorithmResults{
public:
void readAlgorithmResult();
private:
void writeAlgorithmResult();
};
void calculate(AlgorithmResults& results, Arguments...){
//calculate stuff
results.writeAlgorithmResult(results);
}
};
मेरे लिए इस संरचना एकदम सही समझ में आता है, हालांकि यह C++ अनुमति नहीं है। मैंने यह भी देखा कि कुछ समय के लिए जावा में दोनों की अनुमति थी, लेकिन अब दूसरा उदाहरण भी वर्जित है। कारण क्या है, कि पहले उदाहरण की अनुमति है और दूसरा अस्वीकार कर दिया गया है?
क्षमा करें, मैंने दोस्ती उलटा और उसे ठीक करना पड़ा। यह अभी तक एक और प्रमाण है कि SO को पोस्ट करने से पहले कॉफी की आवश्यकता है! –