g++
मुझे एक प्रकार तक पहुंच से इनकार कर रहा है, क्योंकि यह एक निजी दादा पिता होता है। इसका कोई मतलब भी है क्या?निजी विरासत के कारण पहुंच योग्य प्रकार
struct A {};
struct B : private A {};
struct C : B {
void foo(A const& a) {}
};
संकलन इस पैदावार:
1:10: error: ‘struct A A::A’ is inaccessible
6:12: error: within this context
मेरे बिंदु है: मैं एक पूर्वज के रूप में A
उपयोग करने के लिए कभी नहीं चाहता था। वास्तव में, यदि A
B
का निजी पूर्वज है, तो यह किसी के लिए पूरी तरह से अदृश्य नहीं होना चाहिए, लेकिन B
(यानी C
)?
बेशक, मैं protected
विरासत का उपयोग कर सकता हूं लेकिन मेरे मामले में यह वास्तव में समझ में नहीं आता है।
यह बिल्कुल बेवकूफ सुविधा नहीं है; यह 'उपयोग' के साथ खुलासा करने के लिए व्यक्तिगत रूप से कार्यों को चुनकर विरासत इंटरफ़ेस को प्रतिबंधित करने की अनुमति देता है। – avakar
जो आप फॉरवर्डर फ़ंक्शंस के साथ सुविधा के साथ कर सकते हैं और सी ++ विरासत मॉडल को कम अव्यवस्थित बना सकते हैं। निजी विरासत विरासत की संरचना नहीं है और दो अलग-अलग अवधारणाओं को पूरा करने के लिए समान अर्थशास्त्र का उपयोग केवल भ्रमित है। – rerun
यह संरचना और निजी विरासत के बीच एक अंतर है, क्योंकि उत्तरार्द्ध आपको अपने पिता के संरक्षित सदस्यों तक पहुंचने की अनुमति देता है जबकि पूर्व नहीं करता है। – bitmask