Получение ошибки C3352 (указанная функция не соответствует типу делегата), даже если функция соответствует типу делегата - PullRequest
7 голосов
/ 21 марта 2012

Вот точное сообщение об ошибке при компиляции:

ошибка 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 Ответ

15 голосов
/ 21 марта 2012

Я не вижу слова static в сигнатуре вашего метода.Если метод не является статическим, вам нужно передать объект в конструктор делегата.Попробуйте это:

MyDelegate^ del = gcnew MyDelegate(this, &MyRefClass::MyFunction);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...