Also habe ich ein Array (0 - n), das Werte enthält, die ich mit std :: set für die Sortierung verwenden möchte. Das Array ist unsigned int Kosten [n] .
Ich verwende den folgenden Funktor für diese Sortierung:
%Vor%Also hier ist das Problem ... Wenn ich die Menge konstruiere, ist das legal:
%Vor%Ich bekomme keine Fehler, und alles funktioniert wie erwartet. Aber das scheint gehackt und schlampig.
Dies ist jedoch anscheinend illegal:
%Vor%Der Versuch, es einfach mit dem ProxySorter (Kosten) zu konstruieren, verursacht eine Reihe von Fehlern, die für jeden Aufruf von set member so etwas aussagen:
error: Anforderung für das Löschen von Elementen in node_queue, die von Nichtklassentyp std :: set & lt; unsigned int, ProxySorter & gt; (ProxySorter)
Was ist das Problem mit der regulären Konstruktion? Warum funktioniert die Aufgabe? Was ist der Unterschied hier, den ich vermisse? Jede Hilfe sehr geschätzt, danke.
Oh und tut mir leid wegen des Titels der Frage, ich war nicht wirklich sicher, wie ich das nennen soll.
Most-vexing-parse . Sie benötigen ein weiteres Klammerpaar:
%Vor% Andernfalls wird dies als Deklaration einer Funktion interpretiert, die Ihren Settyp zurückgibt und ein Argument vom Typ ProxySorter
namens cost
.
Tags und Links c++ constructor stl set predicate