मेरे पास बेसक्लास है जिसमें समान नाम के दो कार्य हैं लेकिन 2-स्तर की विरासत में विभिन्न हस्ताक्षर हैं।बेसक्लस फ़ंक्शन नहीं मिल सकता है यदि बेसक्लास के पास समान नाम के दो कार्य हैं
struct A {
virtual void f(int) { }
virtual void f(int, int) { };
virtual void f1(int) { }
};
struct B: public A { };
struct C: public B {
void f(int, int) { }
void f1(int) { }
};
int main() {
C obj;
obj.f1(0);
obj.f(0,0);
obj.f(0); // (1) cannot be found
obj.B::f(0); // (2) works
}
मैं (1)
पर सही परिभाषा खोजने के लिए मेरी संकलक (जीसीसी-4.3.2) अपेक्षा की होगी, लेकिन मैं दूसरी ओर काम करता है पर
g++ main.cpp -o main
main.cpp: In function 'int main()':
main.cpp:20: error: no matching function for call to 'C::f(int)'
main.cpp:10: note: candidates are: virtual void C::f(int, int)
distcc[2200] ERROR: compile main.cpp on localhost failed
make: *** [main] Error 1
(2)
मिलता है।
क्या मैं सामान्य रूप में (1)
काम करने के लिए तय करने के लिए की जरूरत है?
+1 पूर्ण उदाहरण के साथ अच्छी तरह से लिखा पद के लिए –