Je l'expérience d'un segfault sur le code suivant:Segfault sur l'utilisation de transformation sur un vecteur de pointeurs vers une classe abstraite
je une classe abstraite A
avec une méthode
virtual bool Ok() const;
Maintenant, je le vecteur suivant
std::vector<A*> v;
rempli avec plusieurs pointeurs vers des objets enfants existants. Je veux accumuler les résultats de la méthode Ok()
comme suit:
std::vector<bool> results;
std::transform(v.begin(), v.end(), results.begin(), std::mem_fun(&A::Ok));
std::accumulate(results.begin(), results.end(), true, std::logical_and<bool>());
Malheureusement, je reçois toujours une erreur de segmentation sur la deuxième ligne, et je ne comprends pas pourquoi. Le remplacement de l'appel de transformation par une boucle C++ standard corrige le segfault. Des idées?
Merci. Il s'avère que ma propre explication était plutôt confuse et erronée. Vous avez parfaitement raison, bien sûr! – lytenyn
J'ai découvert comment corriger ma propre explication. Je vais marquer votre réponse comme la bonne, une fois que je peux le faire, bien sûr. – lytenyn