2012-03-21 21 views
6

यहाँ मैच के लिए लगता है, भले ही संकलन पर सटीक त्रुटि संदेश है:हो रही त्रुटि C3352 (निर्दिष्ट समारोह प्रतिनिधि प्रकार से मेल नहीं खाता), समारोह प्रतिनिधि प्रकार

त्रुटि C3352: 'डबल MyNamespace :: MyRefClass :: myfunction (स्थिरांक std :: वेक्टर < _Ty> &, std :: वेक्टर < _Ty> &, शून्य *) ': निर्दिष्ट समारोह प्रतिनिधि प्रकार से मेल नहीं खाता' डबल (स्थिरांक std :: वेक्टर < _Ty> & , std :: वेक्टर < _Ty> &, शून्य *) '

MyFunction, संदर्भ वर्ग MyRefClass

में एक निजी समारोह उद्धृत त्रुटि दिखाई देता है जब मैं निजी प्रतिनिधि MyDelegate, एक ही संदर्भ वर्ग में घोषित की आवृत्ति बनाने का प्रयास है कोड के साथ:

MyDelegate^ del = gcnew MyDelegate(&MyRefClass::MyFunction); 

जहाँ तक मैं कह सकता हूं, MyFunctionWrapper फ़ंक्शन के हस्ताक्षर प्रतिनिधि से मेल खाते हैं, इसलिए मुझे यकीन नहीं है कि त्रुटि क्या हो रही है।

पूर्णता के लिए, (निजी) समारोह हस्ताक्षर है:

double MyFunction(const std::vector<double> &x, std::vector<double> &grad, void *data) 

और (निजी) प्रतिनिधि घोषणा है:

delegate double MyDelegate(const std::vector<double> &x, std::vector<double> &grad, void *data); 

उत्तर

13

मैं अपने विधि हस्ताक्षर में शब्द static नहीं दिख रहा है । यदि विधि स्थैतिक नहीं है, तो आपको ऑब्जेक्ट को प्रतिनिधि कन्स्ट्रक्टर को पास करने की आवश्यकता है। इसे आज़माएं:

MyDelegate^ del = gcnew MyDelegate(this, &MyRefClass::MyFunction); 
+0

आप बिल्कुल सही हैं - धन्यवाद! – Rory

संबंधित मुद्दे