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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top