c++ - Why is it impossible to get a pointer to a protected method of the base class? -
इस सवाल का पहले से ही एक उत्तर है: < / P>
- 6 जवाब
वर्ग ए { सार्वजनिक: ए () {ऑटो टीएमपी = & amp; ए :: एफू;} संरक्षित: शून्य foo () {}}; वर्ग बी: सार्वजनिक ए {सार्वजनिक: बी () {ऑटो टीएमपी = & amp; ए :: एफू;}};
कक्षा
ए कोई समस्या नहीं संकलित करता है क्लास <कोड> बी एक संकलन त्रुटि उत्पन्न करती है:
'ए :: एफू': वर्ग 'ए' में घोषित संरक्षित सदस्य तक नहीं पहुंच सकता है < P> ऐसा क्यों है, तर्क क्या है? क्या इसमें कोई रास्ता नहीं है (यदि मुझे कॉलबैक,
std :: function आदि के लिए उस सूचक की आवश्यकता है?)
यदि आप
a :: foo पर कोई संकेतक लेने में सक्षम थे, तो आप इसका उपयोग किसी भी वस्तु पर
foo करने के लिए कर सकते हैं प्रकार
ए या प्रकार
सी से व्युत्पन्न
ए :
वर्ग बी: सार्वजनिक ए {सार्वजनिक: रहित एक्सएक्स (ए ए) {ऑटो टीएमपी = & amp; ए :: एफू; । एक * tmp (); } // अवैध}
इसके बजाय,
B :: foo पर एक सूचक लें; यह ठीक है क्योंकि आप इसे केवल
B , अपने खुद के वर्ग की वस्तुओं पर उपयोग कर सकते हैं।
Comments
Post a Comment