मैं गया है this article पढ़ रहा की निजी सदस्यों पहुंच सकते हैं, और थोड़ी देर के लिए memberspace मुहावरा के साथ चारों ओर खेल रहा था जब मैं कुछ है कि मुझे इस स्निपेट (जो समस्याओं के बिना संकलित: http://ideone.com/hRiV5B): भीतर हैरान देखाMemberspaces माता पिता वर्ग
class HugeClass
{
public:
struct memberspace
{
int f() const { return parent.f; }
private:
friend HugeClass;
explicit memberspace(HugeClass & parent)
: parent(parent) {}
HugeClass & parent;
} memberspace;
HugeClass() : memberspace(*this), f(42) {}
private:
int f;
};
मुझे एक संकलक त्रुटि की उम्मीद होगी कि HugeClass::f
की पहुंच की अनुमति नहीं है क्योंकि f
उस संदर्भ में निजी है।
HugeClass
memberspace
के friend
है, इसलिए HugeClass
memberspace
के निजी निर्माता कॉल कर सकते हैं, लेकिन क्यों यह स्पष्ट रूप से memberspace
HugeClass
के friend
की घोषणा के बिना दूसरी तरह के आसपास काम करता है?
सदस्यस्थान को विशाल क्लास का हिस्सा माना जाता है और इसलिए पूर्ण पहुंच है। –