Получение ошибки 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);