में फ़ंक्शन ओवरलोडिंग के साथ समस्या है, यह संभवतः एक नोब प्रश्न है, इसके बारे में खेद है। सी ++, फ़ंक्शन अधिभार और विरासत में कुछ उच्च स्तर की सामग्री के साथ गड़बड़ करने की कोशिश करते समय मुझे हाल ही में एक अजीब समस्या का सामना करना पड़ा।सी ++ समस्या विरासत वर्ग
मैं समस्या का प्रदर्शन करने के लिए एक साधारण उदाहरण दिखाऊंगा;
दो वर्ग, classA
और classB
नीचे दिए गए हैं;
class classA{
public:
void func(char[]){};
};
class classB:public classA{
public:
void func(int){};
};
मैं क्या पता
classB
अब दो
func(..)
काम करता है, अलग अलग तर्क की वजह से अतिभारित पास जाना चाहिए के अनुसार
।
लेकिन मुख्य विधि में इसे आजमाते समय;
int main(){
int a;
char b[20];
classB objB;
objB.func(a); //this one is fine
objB.func(b); //here's the problem!
return 0;
}
यह विधि void func(char[]){};
जो सुपर वर्ग, classA
में है के रूप में त्रुटियों देता है, व्युत्पन्न वर्ग, classB
पूर्णांक दिखाई नहीं देता है।
मैं इसे कैसे दूर कर सकता हूं? यह नहीं है कि सी ++ में ओवरलोडिंग कैसे काम करती है? मैं C++ के लिए नया हूं लेकिन जावा में, मुझे पता है कि मैं इस तरह कुछ उपयोग कर सकता हूं।
हालांकि मुझे पहले से ही this thread मिल गया है जो एक समान मुद्दों के बारे में पूछता है, मुझे लगता है कि दोनों मामले अलग हैं।
जवाब + लिंक के लिए धन्यवाद। मुझे आश्चर्य है कि सी ++ लोगों ने जानबूझकर इस चीज़ को रखा है या नहीं। क्या कोई पेशेवर हैं? यह मेरे जैसा महसूस करता है जो विरासत के विचार को खराब करता है, है ना? – Anubis
@ अनीबिस, यह अधिभार संकल्प के लिए नियमों का सामान्य मामला है और सामान्य रूप से 'उपयोग' घोषणा का उद्देश्य है। – chris