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

C++ cli 获取错误C3352(指定的函数与委托类型不匹配),即使函数似乎与委托类型匹配,c++-cli,C++ Cli,以下是有关编译的确切错误消息: 错误C3352:“double MyNamespace::MyRefClass::MyFunction(const std::vector&,std::vector&,void*)”:指定的函数与委托类型“double(const std::vector&,std::vector&,void*)”不匹配 MyFunction是引用类中的私有函数MyRefClass 当我尝试创建在同一引用类中声明的私有委托MyDelegate的实例时,会出现引用的错误,代码为: M

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

错误C3352:“double MyNamespace::MyRefClass::MyFunction(const std::vector&,std::vector&,void*)”:指定的函数与委托类型“double(const std::vector&,std::vector&,void*)”不匹配

MyFunction
是引用类中的私有函数
MyRefClass

当我尝试创建在同一引用类中声明的私有委托
MyDelegate
的实例时,会出现引用的错误,代码为:

MyDelegate^ del = gcnew MyDelegate(&MyRefClass::MyFunction);
据我所知,函数
MyFunctionWrapper
的签名与委托匹配,因此我不确定是什么导致了错误

为完整起见,(专用)函数签名为:

double MyFunction(const std::vector<double> &x, std::vector<double> &grad, void *data)
double MyFunction(const std::vector&x,std::vector&grad,void*data)
(私人)委托声明为:

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

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

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