निम्नलिखित उदाहरण को देखते हुए, मुझे b->DoSomething()
के बजाय कथन b->A::DoSomething()
का स्पष्ट रूप से उपयोग क्यों करना है?सी ++ ओवरलोड रिज़ॉल्यूशन
क्या कंपाइलर का ओवरलोड रिज़ॉल्यूशन यह नहीं समझ सकता कि मैं किस विधि के बारे में बात कर रहा हूं?
मैं उपयोग कर रहा हूँ माइक्रोसॉफ्ट वी.एस. 2005 (नोट: आभासी इस मामले में मदद नहीं करता है का उपयोग कर।)
class A
{
public:
int DoSomething() {return 0;};
};
class B : public A
{
public:
int DoSomething(int x) {return 1;};
};
int main()
{
B* b = new B();
b->A::DoSomething(); //Why this?
//b->DoSomething(); //Why not this? (Gives compiler error.)
delete b;
return 0;
}
मैं कक्षा बी में एक पॉइंटर का उपयोग कर कक्षा ए में DoSomething() को कॉल करने की कोशिश कर रहा हूं। – Abe