获取错误C3352(指定的函数与委托类型不匹配),即使函数似乎与委托类型匹配

Ror*_*ory 7 c++-cli

以下是编译时的确切错误消息:

错误C3352: 'double 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);
Run Code Online (Sandbox Code Playgroud)

据我所知,函数的签名MyFunctionWrapper与委托匹配,所以我不确定导致错误的原因.

为完整起见,(私有)函数签名是:

double MyFunction(const std::vector<double> &x, std::vector<double> &grad, void *data)
Run Code Online (Sandbox Code Playgroud)

和(私人)代表声明是:

delegate double MyDelegate(const std::vector<double> &x, std::vector<double> &grad, void *data);
Run Code Online (Sandbox Code Playgroud)

Dav*_*Yaw 15

我没有static在你的方法签名中看到这个词.如果方法不是静态的,则需要将对象传递给委托构造函数.试试这个:

MyDelegate^ del = gcnew MyDelegate(this, &MyRefClass::MyFunction);
Run Code Online (Sandbox Code Playgroud)