Вот точное сообщение об ошибке при компиляции:
ошибка 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);