Question

Je travaille actuellement sur une surcharge du == opérateur pour ma liste chaînée. Je l'opérateur dans mon mis en place comme en-tête ce qui suit:

class sqrlst
{
public:
std::vector<int> vlist;

bool operator == (iterator const & rhs )
{
     return this->iter == rhs.iter;
};

J'ai ensuite créé une méthode dans mon fichier d'en-tête avec le code suivant

void test()
    {
        bool flag;
        if (vlist.begin()==vlist.begin())
        {
            flag=true;
        }
    };
};

Toutefois, lorsque cette méthode est appelée, il ne va pas à mon surcharge == fonction de l'opérateur quand il frappe le cas statment. Quand je mets le point de débogage sur la fonction de surcharge, il dit que la ligne ne sera pas atteint.

Les conseils ou suggestions sont grandement appréciés. Merci!

EDIT:. Vlist est une liste de ints

Était-ce utile?

La solution

Eh bien, les fonctions membres de std::vector retourne begin() et end() itérateur de type std::vector<T>::iterator, ou `std::vector<T>::const_iterator, selon que l'objet vectoriel est const ou non const. Quoi qu'il en soit, le type de iterator n'est pas défini par vous. == dans votre Surcharge sqrlist de classe ne fait rien. Le == de surcharge doit être membre de la classe itérateur de vecteur, lequel vous pas autorisé à modifier.

Notez également la classe itérateur de ce vecteur a déjà surchargé les opérateurs de == et !=. Alors, quand vous comparez itérateurs en utilisant ==, il invoque une fonction membre de la classe itérateur de vecteur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top