Получение ошибки C3352 (указанная функция не соответствует типу делегата), хотя функция, похоже, соответствует типу делегата

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

ошибка 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)

и (частное) объявление делегата:

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

1 ответов


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

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