Funzione sovraccarica == non viene chiamata
-
27-10-2019 - |
Domanda
Attualmente sto lavorando al sovraccarico dell'operatore == per la mia lista collegata. Ho l'operatore nella mia intestazione impostata come quanto segue:
class sqrlst
{
public:
std::vector<int> vlist;
bool operator == (iterator const & rhs )
{
return this->iter == rhs.iter;
};
Ho quindi creato un metodo nel mio file di intestazione con il seguente codice
void test()
{
bool flag;
if (vlist.begin()==vlist.begin())
{
flag=true;
}
};
};
Tuttavia, quando questo metodo viene chiamato, non va alla mia funzione operatore sovraccarico quando colpisce l'impresa IF. Quando metto il punto di debug sulla funzione di sovraccarico, dice che la linea non verrà raggiunta.
Eventuali suggerimenti o suggerimenti sono molto apprezzati. Grazie!
EDIT: VLIST è un elenco di INT.
Soluzione
Bene, std::vector
funzioni del membro begin()
e end()
Restituisce l'iteratore di tipo std::vector<T>::iterator
, o `std::vector<T>::const_iterator
, a seconda che sia l'oggetto vettoriale const
o non-consst. Qualunque cosa sia, il tipo di iteratore non è definito da te. Sovraccarico ==
nella tua classe sqrlist
non fa nulla. Il sovraccarico ==
dovrebbe essere un membro della classe Iterator di Vector, che sei non permesso di modificare.
Si noti inoltre che la classe iteratrice di Vector è già sovraccaricata ==
e !=
operatori. Quindi quando si confrontano gli iteratori usando ==
, sta invocando una funzione membro della classe iteratrice di Vector.