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 ausgedruecktMeep Meep
-
finix schrieb:
Schreib dir [...]
oder ein PredikatAngepasste 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