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