2017-01-13 4 views
2

Ich bin derzeit etwas Arbeit mit C++/CLI tun, und ist ein seltsamen Übersetzungsfehler mit dem folgenden Code zu begegnen:C++/CLI Übersetzungsfehler mit generischen Delegaten

private ref class LinqHelper abstract sealed 
{ 
public: 
    generic<typename T, typename U> static Func<T, U>^ Cast() 
    { 
     return gcnew Func<T, U>(&LinqHelper::Cast); 
    } 

private: 
    generic<typename T, typename U> static U Cast(T val) 
    { 
     return safe_cast<U>(val); 
    } 
}; 

Fehler C3352: 'Cast': die angegebene Funktion nicht mit der Delegattyp ‚U (T)‘

spezifischere, die problematische Codezeile wird:

return gcnew Func<T, U>(&LinqHelper::Cast); 

Ich verstehe mich nicht, um diesen Fehler zu erklären. Die Funktion "Cast static member", die ich an den Func-Delegate-Konstruktor übergebe, hat die erforderliche Signatur, d. H. U Cast (T val).

Könnte mir bitte irgendwer etwas Licht für mich geben?

Wenn es eine Hilfe ist: Ich arbeite mit VS 2015 und das C++/CLI-Projekt referenziert das .NET Framework v4.5.2.

Danke

Antwort

2

Der Compiler nicht glücklich ist die Typargumente für die Gussverfahren ableiten zu müssen. Miese Fehlermeldung, nicht ungewöhnlich in C++/CLI. Fix:

return gcnew Func<T, U>(&LinqHelper::Cast<T, U>); 
+0

Vielen Dank! –

Verwandte Themen