class A{
public:
A();
private:
~A();
};
class B:public A{
public:
B(){};
private:
~B();
};
int main()
{
return 0;
}
मैं इस तरह एक संकलन त्रुटि मिल गया है:क्यों व्युत्पन्न कन्स्ट्रक्टर को आधार विनाशक की आवश्यकता है?
test.cpp: In constructor 'B::B()':
test.cpp:5:4: error: 'A::~A()' is private
test.cpp:10:8: error: within this context
मैं व्युत्पन्न निर्माता आधार नाशक आह्वान करने के लिए की जरूरत है पता है, इसलिए मैं public
रूप A::A()
निर्धारित किया है। हालांकि, संकलक शिकायत क्यों करता है कि इसे सार्वजनिक A::~A()
की आवश्यकता है?
@EdChum: नहीं, वह प्रश्न यह नहीं समझाता है कि व्युत्पन्न कन्स्ट्रक्टर को बेस-क्लास विनाशक तक पहुंच की आवश्यकता क्यों है। –
@ माइकसेमोर हाँ, आप सही हैं, मेरे करीबी वोट को वापस लेना – EdChum
आप * शायद * उस वर्ग का निर्माण नहीं कर सकते जिसे आप नष्ट नहीं कर सकते हैं और आप 'बी' को नष्ट नहीं कर सकते क्योंकि विनाशक को '~ ए()' तक पहुंच की आवश्यकता है जो आपको निजी है (आपको आवश्यकता है इसे संरक्षित करने के लिए या 'मित्र' वर्ग बी)। – firda