ich so etwas wie eine Art-Algorithmus haben, ist hier, und ich möchte es einen Funktor übergeben, die die Sortierkriterien (std bietet :: binäre_funktion). So sollte es T.operator <() zum Beispiel anrufen, wenn std :: less gegeben ist.Wie ein std-Funktors in c passieren ++ und es verwenden, ohne zu wissen, welche es speziell
Problem ist, ist die Elementfunktion Operator() nicht virtuell ist. Also muss ich wissen, welche Art von Objekt gegeben wurde, um eine dynamische Besetzung zu machen, die nicht wirklich nett ist.
Regards,
Dennis
ich will nicht dynamic_cast verwenden ... aber ich auch kippe Verwendung operator(), weil im lokalen Kontext, es binary_function ist, die keinen Operator() definiert haben. afaik du musst es zuerst überladen, um es zu benutzen ... – Dennis
@Dennis: dann bist du missbrauchen 'binary_function'. Wie ich in meiner Antwort gesagt habe, war es nie als polymorphe Basisklasse gedacht. Es definiert nur ein paar nützliche typedefs, nichts mehr. Sie können eine 'binary_function' nicht sinnvoll in eine andere Funktion übergeben, das sollte nicht funktionieren. –
ok thx.May du ein Beispiel? (link?) ich wollte binary_function als unspezifizierte superklasse verwenden, damit jeder compare-functor aus der STL verwendet werden kann ... ich verstehe hier nicht wirklich, wie man eine template verwendet. – Dennis