2012-03-21 7 views
6

Tu jest dokładny komunikat o błędzie na kompilacji:Uzyskiwanie błąd C3352 (określona funkcja nie pasuje typ delegata), choć wydaje się, aby dopasować funkcja delegata typu

error C3352: „double MyNamespace :: MyRefClass :: MyFunction (const std :: vector < _Ty> &, std :: vector < _Ty> &, void *) ': określona funkcja nie pasuje typ delegata' podwójne (const std :: vector < _Ty> & , std :: vector < _Ty> &, void *) '

MyFunction to prywatna funkcja w klasie referencyjnej MyRefClass

Cytowany błąd pojawia się, gdy próbuję utworzyć instancję prywatnej delegata MyDelegate, zadeklarowanego w tej samej klasie referencyjnej, z kodem:

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

O ile mogę stwierdzić, podpisy funkcji MyFunctionWrapper pasują do delegata, więc nie jestem pewien, co powoduje błąd.

Dla kompletności (prywatny) Podpis funkcja jest:

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

i (prywatny) oświadczenie delegata jest:

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

Odpowiedz

13

nie widzę słowo static w podpisie metoda . Jeśli metoda nie jest statyczna, musisz przekazać obiekt do konstruktora delegata. Wypróbuj to:

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

Masz dokładnie rację - dziękuję! – Rory

Powiązane problemy