Possiedo un vettore di puntatori di classe std::vector<Square*> listSquares
. Voglio ordinarlo con uno degli attributi della classe come chiave. Questo è quello che sto facendostd :: sort() su un vettore di puntatori di classe
bool compById(Square* a, Square* b)
{
return a->getId() < b->getId();
}
std::sort(listSquares.begin(), listSquares.end(), compById)
ma il compilatore dice: errore: nessuna funzione di corrispondenza per la chiamata all 'ordinamento (std :: vector :: iterator, std :: vector :: iterator, < irrisolto sovraccarico tipo di funzione >) '
cosa sto facendo di sbagliato qui?
Se è possibile utilizzare C++ 11, si dovrebbe fare di questo un lambda: 'std :: sort (listSquares.begin(), listSquares.end(), [] (Piazza * a, * b Piazza) {return a-> getId() < b-> getId;}) '. – leftaroundabout
Assicurati di volere effettivamente dei puntatori e non solo degli oggetti. – chris
Non riesco a usare C++ 11. @chris Sono sicuro di voler usare i puntatori. – qutab