template fuer eine callback funktion problem



  • hola leute

    ich muesste fuer ne template-klasse eine callback-funktion machen, dich ich fuer eine sortierung brauche.

    bei folgendem code gibts aber ne fehlermeldung: Templates muessen Klassen oder Funktionen sein.

    template <class object>
    bool (*groesser)(object &o1, object &o2);
    

    gibts bei templates keine callbackfunktionen ?

    Meep Meep



  • Hm. Ein Template für Funktionszeiger?

    Schreib dir eine Funktion,
    oder ein Predikat,
    oder nimm einfach std::greater



  • Meep Meep schrieb:

    bei folgendem code gibts aber ne fehlermeldung: Templates muessen Klassen oder Funktionen sein.

    template <class object>
    bool (*groesser)(object &o1, object &o2);
    

    Meep Meep

    Das ist ja, wie wenn du schreibst:

    template <typename T>
     T object;
    

    und kann natürlich nicht aufgelöst werden. Ein Funktionszeiger ist ja auch eine Art Variable!

    Moritz



  • re

    ok, nochmal etwas ausfuehrlicher.

    meine template-klasse, nennen wir sie mal xtree, ist sowas aehnliches wie ein vector.
    damit ich den xtree sortieren lassen kann, brauch ich ne callback-funktion.
    die daten, mit denen xtree arbeitet, sind realtiv grosse structs, die aus 12 - 15 daten bestehen. je nach ereigniss muss xtree die daten unterschiedlich sortieren.
    ich kann schliesslich bei einem struct nur einmal den operator< oder operator> verwenden.
    also muss ich das dann extern machen lassen. hoffe ich hab mich jetz etwas besser ausgedrueckt

    Meep Meep



  • finix schrieb:

    Schreib dir [...]
    oder ein Predikat

    Angepasste Antwort:
    Schreib dir soviele Predikate wie du brauchst 😃
    Kann ja nicht so schwer sein, oder?

    edit:

    #include <functional>
    
    template <class T>
    struct SortGreater : public std::binary_function<T, T, bool>
    {
      bool operator()(const T& lhs, const T& rhs)
      {
        // ...
      }
    };
    
    template <class T>
    struct SortColour : public std::binary_function<T, T, bool>
    {
      bool operator()(const T& lhs, const T& rhs)
      {
        // ...
      }
    };
    
    template <class T>
    struct SortWhatever : public std::binary_function<T, T, bool>
    {
      bool operator()(const T& lhs, const T& rhs)
      {
        // ...
      }
    };
    


  • re

    ich weiß zwar nicht weshalb, aber das wort pretikat ist mir bei c++ noch nicht untergekommen.
    kann mir jemand erklaeren was das genau sein soll ?

    mein prob mit dem callback hab ich inzwischen geloest

    Meep Meep


Anmelden zum Antworten