#include <iostream>
using namespace std;
class Base
{
public:
Base(){cout <<"Base"<<endl;}
virtual ~Base(){cout<<"~Base"<<endl;}
virtual void foo(){ cout<<"foo base"<<endl;}
};
class Derived: private Base
{
public:
Derived(){cout<<"Derived"<<endl;}
virtual ~Derived(){cout<<"~Derived"<<endl;}
virtual void foo(){ cout<<"foo dervied"<<endl;}
};
int main(int argc, char *argv[])
{
Base *pb = new Derived;
Derived d;
d.foo();
return 0;
}
जब मैं ऊपर नमूना कार्यक्रम क्रियान्वित मैं त्रुटि निम्न हो: protected.cpp: 'int मुख्य (int, चार **)' समारोह में: protected.cpp: 26: त्रुटि: ' बेस '' व्युत्पन्न 'का एक अप्राप्य आधार हैसंरक्षित व्युत्पन्न वर्ग
बेस पॉइंटर के साथ व्युत्पन्न वस्तु बनाना क्यों संभव नहीं है ????
तो मैं
Derived d
Derived d1= new Derived;
तरह व्युत्पन्न वर्ग का instanse बना सकते हैं लेकिन जैसे
Base * b = new derived
बेस वर्ग सूचक से उदाहरण बनाकर असफल हो जायेगी।
ऐसा इसलिए है क्योंकि व्युत्पन्न और व्यक्तिगत रूप से व्युत्पन्न होने पर व्युत्पन्न आधार से व्युत्पन्न वर्ग नहीं है ??
क्या यह सही है ?????
इस प्रश्न को 3 डाउनवॉट क्यों मिले? यह एक बिल्कुल वैध सवाल है। +1, हास्यास्पद। – mstrobl