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 19

    Ich 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_type und result_type bereitstellen muss.



  • Zeig am besten mal, wie die Klasse aussieht, welche du instanzierst.


Anmelden zum Antworten