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;
}