2012-03-21 12 views
6

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); 

risposta

13

non vedo la parola static nella tua firma metodo . Se il metodo non è statico, è necessario passare l'oggetto al costruttore delegato. Prova questo:

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

Hai esattamente ragione - grazie! – Rory

Problemi correlati