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

时间:2012-03-21 16:06:47

标签: 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);

据我所知,函数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);

1 个答案:

答案 0 :(得分:15)

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

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