क्यों इस कोड: इन त्रुटियों मेंविरासत कंस्ट्रक्टर्स
class A
{
public:
explicit A(int x) {}
};
class B: public A
{
};
int main(void)
{
B *b = new B(5);
delete b;
}
परिणाम:
main.cpp: In function ‘int main()’: main.cpp:13: error: no matching function for call to ‘B::B(int)’ main.cpp:8: note: candidates are: B::B() main.cpp:8: note: B::B(const B&)
एक के निर्माता के वारिस बी नहीं करना चाहिए?
(यह उपयोग कर रहा है जीसीसी)
इसका कारण यह है एक साल है कि कोई संकलक है कि वास्तव में इसके बाद के संस्करण कोड का निर्माण कर सकते :-) – Mikhail
@Mikhail किया गया है से अधिक के लिए काफी बुराई है: दोनों बजना और जी ++ अब कंस्ट्रक्टर्स इनहेरिट समर्थन करना चाहिए: http: // बजना .llvm.org/cxx_status.html http://gcc.gnu.org/projects/cxx0x.html सही उत्तर के रूप में इसे ऊपर उठाने की अनुशंसा करें। –
बस पूछ रहा है, क्या एक विरासत वाला निर्माता बेस क्लास के निजी सदस्यों तक पहुंच/प्रारंभ करने में सक्षम होगा? या मुझे उन्हें संरक्षित के रूप में निर्दिष्ट करना होगा? – Markasoftware