si vous n'avez toujours pas trouvé :
si une classe reste abstraite c'est simplement qu'il lui reste au moins une méthode virtuelle pure. Reste à trouver laquelle : si vous avez clairement redéfinit une méthode virtuelle (attention avec EXACTEMENT le même prototype, y compris l'éventuel const à la fin) c'est que ce n'est pas elle et qu'il faut chercher une autre.
C'est souvent facile à trouver parce que le compilateur vous dit pourquoi vous ne pouvez pas créer d'instance. Il dit qqchose du genre : je ne peux pas créer d'instance de la classe A qui est abstraite en raison de cette méthode : blabla f(truc, machin);
En clair :
- regardez bien le message du compilateur pour trouver la source du problème ;
- vérifiez que vous redéfinissez bien la MEME méthode (et non pas une qui ressemble : argument en moins, const qui manque, ...)
Ajouter le mot clé « override » (à la redéfinition) permet justement de plus facilement détecter ce cas numéro 2