2016-09-22 11 views
1

* bearbeitet Fehlermeldungen hinzufügenAufruf C++ std :: sort auf einem Vektor von struct Zeiger

intellisense Visual Studio ist rot die Sortierfunktion das Markieren, wenn ich es auf einen Vektor von Zeigern auf eine Struktur aufrufen, die ich habe früher im Programm definiert.

Ich habe einen Funktionszeiger auf meine Vergleichsmethode instanziiert und Art anzurufenden wie folgt:

bool(*compareNodes)(nodePtr, nodePtr) = compNodes; 

sort(frontier.begin(), frontier.end(), compNodes); 

/* flags compnodes and sort; "cannot determine which instance of overloaded 
* function "compNodes is intended" */ 

compNodes Funktion:

static bool compNodes(nodePtr Node1, nodePtr Node2){ 
    if (Node1->fValue != Node2->fValue) 
     return (Node1->fValue < Node2->fValue); 
    else 
     return (Node1->ID > Node2->ID); 
} 
+3

Und Sie interessieren sich, was Intellisense tut, weil ...? –

+0

Haben Sie eine Frage? –

+0

Gibt es eine Fehlermeldung? – samgak

Antwort

1

wilde Vermutung: compNodes ist überlastet. Sie haben versucht, mit compareNodes einen Zeiger auf die richtige Überlast zu bekommen, aber Sie verwenden ihn nicht wirklich in std::sort(). Ändern Sie die Zeile an:

sort(frontier.begin(), frontier.end(), compareNodes); 

Wenn Ihr Warnstufe hoch genug war, dann würden Sie sehen, dass compareNodes zur Zeit nicht benutzt wird.

+0

Wow, habe das nicht verstanden. Das hat Dinge behoben, und ich kann meinen Funktionsprototyp auch so behalten! – Adam

Verwandte Themen