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

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

error C3352: ‘double MyNamespace::MyRefClass::MyFunction(const std::vector<_Ty> &,std::vector<_Ty> &,void *)’ : the specified function does not match the delegate type ‘double (const 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,void *data);

解决方法

我在方法签名中看不到static这个词.如果方法不是静态的,则需要将对象传递给委托构造函数.试试这个:
MyDelegate^ del = gcnew MyDelegate(this,&MyRefClass::MyFunction);

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...