मैं के एक विशिष्ट संस्करण के लिए पॉइंटर प्राप्त करने की कोशिश कर रहा हूं सदस्य फ़ंक्शन ओवरलोड किया गया। यहाँ उदाहरण है:ओवरलोडेड सदस्य फ़ंक्शन का पता कैसे प्राप्त करें?
class C
{
bool f(int) { ... }
bool f(double) { ... }
bool example()
{
// I want to get the "double" version.
typedef bool (C::*MemberFunctionType)(double);
MemberFunctionType pointer = &C::f; // <- Visual C++ complains
}
};
त्रुटि संदेश है "त्रुटि C2440: 'आरंभ': 'अतिभारित-समारोह' से परिवर्तित नहीं कर सकते 'MemberFunctionType' करने के लिए"
यह काम करता है अगर f
ओवरलोड न हो जाए, लेकिन नहीं उपरोक्त उदाहरण में। कोई उपाय?
संपादित
खबरदार, कोड ऊपर मेरी वास्तविक दुनिया समस्या है, जो था कि मैं भूल गया था एक "स्थिरांक" प्रतिबिंबित नहीं किया - यह है कि क्या स्वीकार किए जाते हैं जवाब बताते है। मैं सवाल छोड़ दूंगा क्योंकि यह है, क्योंकि मुझे लगता है कि समस्या दूसरों के साथ हो सकती है।
ने एक त्वरित परीक्षण किया और सब कुछ संकलित करता है। कोड ठीक दिखता है - यदि यह आपका मूल कोड है: डी क्या आप भी बिल्कुल इस तरह के कॉन्स्टेस हैं? –
एमएसवीसी का आप किस संस्करण का उपयोग कर रहे हैं। यह 2008 में ठीक काम करता है। – Eclipse
बेशक। मुझे बहुत अच्छा आनंद मिलेगा: पी –