इस कोड पर संकलित से enclosing वर्ग की रक्षा की सदस्य तक पहुंच MSVC/जी ++:नेस्टेड कक्षाएं: एक नेस्टेड संरक्षित वर्ग
class A{
protected:
int i;
class B{
public:
A* a;
B(A* a_)
:a(a_){
}
void doSomething(){
if (a)
a->i = 0;//<---- this part
}
};
public:
A()
:i(0){
}
};
आप देख सकते हैं, बी वर्ग enclosing के "सुरक्षित" खंड के लिए उपयोग हो जाता है, हालांकि इसे मित्र के रूप में घोषित नहीं किया गया है।
क्या यह एक मानक (मानक-अनुरूप) व्यवहार है?
मैं कभी-कभी इस सुविधा का उपयोग करता हूं, लेकिन मुझे यह नियम याद नहीं है कि नेस्टेड संरक्षित वर्ग को स्वचालित रूप से संलग्न वर्ग के सभी संरक्षित डेटा तक पहुंच प्राप्त करनी चाहिए।
डुपे प्रश्न। मैं अब मूल की खोज नहीं कर रहा हूं, हालांकि। :) –