2012-03-21 22 views
6

這裏是編譯確切的錯誤信息:得到錯誤C3352(指定的函數不匹配委託類型),即使功能似乎匹配委託類型

錯誤C3352:「雙myNameSpace對象:: MyRefClass :: MyFunction(const std :: vector < _Ty> &,std :: vector < _Ty> &,void *)':指定的函數不匹配委託類型'double(const std :: vector < _Ty> & ,std :: vector < _Ty> &,void *)'

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 2012-03-21 17:08:05

相關問題