Ecco il messaggio di errore esatto sulla compilazione:ottenendo l'errore C3352 (funzione specificata non corrisponde al tipo delegato), anche se la funzione sembra corrispondere delegato tipo
errore C3352: 'double MyNamespace :: MyRefClass :: MyFunction (std :: vector const < _Ty> &, std :: vector < _Ty> &, void *) ': la funzione specificata non corrisponde al tipo delegato' doppio (std :: vector const < _Ty> & , std :: vector < _Ty> &, void *) '
MyFunction
è una funzione privata nella classe di riferimento MyRefClass
L'errore citato si presenta quando si tenta di creare un'istanza del delegato privato MyDelegate
, ha dichiarato nella stessa classe di riferimento, con il codice:
MyDelegate^ del = gcnew MyDelegate(&MyRefClass::MyFunction);
Per quanto posso dire, le firme della funzione MyFunctionWrapper
corrispondono al delegato, quindi non sono sicuro di cosa stia causando l'errore.
Per completezza, la firma della funzione (privata) è:
double MyFunction(const std::vector<double> &x, std::vector<double> &grad, void *data)
e la dichiarazione delegato (privato) è:
delegate double MyDelegate(const std::vector<double> &x, std::vector<double> &grad, void *data);
Hai esattamente ragione - grazie! – Rory