Warum darf std das und ich nicht?
-
Hi
Vielleicht seh ich grad nur den Wald vor lauter Bäumen nicht oder es ist einfach zu spät aber warum ist das ok:
// functional standard header template<class _Fn2> class binder1st : public unary_function<typename _Fn2::second_argument_type, typename _Fn2::result_type> { // functor adapter _Func(stored, right) .....das aber nicht:
template<class _Fn > class Checker : public std::unary_function< typename _Fn::second_argument_type, typename _Fn::result_type > { .....Den zweiteres spuckt mir haufenweise Fehler aus:
Fehler 2 error C2825: "_Fn": Muss eine Klasse oder ein Namespace sein, wenn gefolgt von "::". c:\dokumente und einstellungen\rean\desktop\projekte\test1\test1\main.cpp 18
Fehler 3 error C2039: 'second_argument_type': Ist kein Element von 'global namespace'' c:\\dokumente und einstellungen\\rean\\desktop\\projekte\\test1\\test1\\main.cpp 18 Fehler 4 error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner 'second\_argument\_type' c:\\dokumente und einstellungen\\rean\\desktop\\projekte\\test1\\test1\\main.cpp 18 Fehler 5 error C2065: 'second\_argument\_type': nichtdeklarierter Bezeichner c:\\dokumente und einstellungen\\rean\\desktop\\projekte\\test1\\test1\\main.cpp 18 Fehler 6 error C2825: "_Fn": Muss eine Klasse oder ein Namespace sein, wenn gefolgt von "::". c:\\dokumente und einstellungen\\rean\\desktop\\projekte\\test1\\test1\\main.cpp 18 Fehler 7 error C2039: 'result_type': Ist kein Element von 'global namespace'' c:\dokumente und einstellungen\rean\desktop\projekte\test1\test1\main.cpp 18
Fehler 8 error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner 'result_type' c:\dokumente und einstellungen\rean\desktop\projekte\test1\test1\main.cpp 18
Fehler 9 error C2065: 'result_type': nichtdeklarierter Bezeichner c:\dokumente und einstellungen\rean\desktop\projekte\test1\test1\main.cpp 18
Fehler 10 error C2955: "std::unary_function": Für die Verwendung der template-Klasse ist eine template-Argumentliste erforderlich. c:\dokumente und einstellungen\rean\desktop\projekte\test1\test1\main.cpp 19Ich versteh die Fehlermeldungen zwar soweit dass ich wohl ein namespace-Problem habe, die Frage ist aber wie ich das löse?
(namespace std { ... } hat nix gebracht )Vielen Dank schonmal
rean
-
Du musst natürlich einen Typen übergeben, der die Schnittstellen-Anforderungen erfüllt. Ich nehme mal an,
<functional>ist inkludiert?Wieso verwendest du überhaupt
_Fn? Bezeichner, die mit Unterstrichen beginnen oder zwei Unterstriche enthalten, sind für Compiler und Implementierung reserviert. In den meisten Fällen gehen die dich nichts an, und du solltest selber bessere wählen.
-
Jap functional ist inkludiert.
Hab die Bezeichner geändert, gebracht hat das aber nüscht.
-
Wie gesagt:
Nexus schrieb:
Du musst natürlich einen Typen übergeben, der die Schnittstellen-Anforderungen erfüllt.
Konkret heisst das, dass der Templateparameter die Typen
second_argument_typeundresult_typebereitstellen muss.
-
Zeig am besten mal, wie die Klasse aussieht, welche du instanzierst.