puoi implementarlo tramite una funzione friend
codice:#include <list> using namespace std; class Arco { public : int ID, tail, head; friend bool operator<(Arco primo_tail, Arco secondo_tail); }; typedef list<Arco> listaArchi; bool operator<(Arco primo_tail, Arco secondo_tail) { // Non so che scrivere se levo primo_tail return primo_tail.tail < secondo_tail.tail; }
oppure come come metodo della classe Arco
codice:#include <list> using namespace std; class Arco { public : int ID, tail, head; bool operator<(Arco secondo_tail); }; typedef list<Arco> listaArchi; bool Arco::operator<(Arco secondo_tail) { // Ecco come puoi scriverlo // tail equivale implicitamente a this->tail return tail < secondo_tail.tail; }
ad ogni modo è meglio passare i parametri "by reference"
per evitare una copia inutile ogni volta che invochi il metodo
codice:#include <list> using namespace std; class Arco { public : int ID, tail, head; bool operator<(const Arco& secondo_tail) const; // ^^^^^ // metodo "const", infatti non modifica l'oggetto }; typedef list<Arco> listaArchi; bool Arco::operator<(const Arco& secondo_tail) const { // Ecco come puoi scriverlo // tail equivale implicitamente a this->tail return tail < secondo_tail.tail; }

Rispondi quotando