Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

Description de l'erreur d'exécution R6025 dans Visual C++

Résumé
Cet article décrit un problème qui peut se produire lors du développement d'un programme. Si vous continuez à rencontrer un problème semblable à celui décrit dans cet article, il peut s'agir d'un problème différent. Pour rechercher des informations relatives à un problème spécifique, incluez le nom du produit dans votre recherche afin de limiter les résultats. Pour dépanner des problèmes similaires, reportez-vous à la section « Problèmes similaires et solutions » plus loin dans cet article.
Symptômes
Le programme C++ échoue et signale l'erreur d'exécution suivante :
erreur d'exécution R6025
- appel d'une fonction virtuelle pure
Cause
Cette erreur se produit lorsque votre application appelle indirectement une fonction membre virtuelle pure dans un contexte où un appel à la fonction n'est pas valide. Dans la plupart des cas, le compilateur détecte cela et signale l'erreur lors de la génération de l'application. Mais selon la façon dont votre code est écrit, le problème est parfois détecté uniquement au moment de l'exécution.

L'erreur se produit lorsque vous appelez indirectement une fonction virtuelle pure dans le contexte d'un appel au constructeur ou au destructeur d'une classe de base abstraite. Cela est illustré dans l'exemple de code ci-dessous, avec une description supplémentaire.
Résolution
L'appel d'une fonction virtuelle pure étant une erreur de programmation, vous devez rechercher l'appel à la fonction virtuelle pure et réécrire le code afin qu'elle ne soit pas appelée.

L'une des manières de rechercher un appel à une fonction virtuelle pure est de remplacer la fonction virtuelle pure par une implémentation qui appelle la fonction API Windows DebugBreak. Lors de l'utilisation du débogueur, DebugBreak provoquera un point d'arrêt codé de manière irréversible. Lorsque le code cesse de s'exécuter à ce point d'arrêt, vous pouvez consulter la pile d'appels pour voir où la fonction a été appelée.

Une autre façon de rechercher un appel à une fonction virtuelle pure consiste à définir un point d'arrêt sur la fonction _purecall détectée dans PureVirt.c. L'arrêt sur cette fonction présente l'avantage de garder la pile intacte afin que vous puissiez tracer ce qui se produit.
Statut
Ce comportement est voulu par la conception même du produit.
Plus d'informations
Pour plus d'informations, reportez-vous à la page « C Run-Time Errors R6002 through R6025 » de la section « Build Errors » sur le site Web Microsoft Developer Network (MSDN) à l'adresse suivante (en anglais) :Remarque L'erreur R6025 n'est pas documentée dans les manuels ni dans l'aide en ligne fournis avec Visual C++, versions 2.x ou supérieures. Toutefois, elle est discutée brièvement dans la Partie 3 du fichier Readme.wri fourni avec Visual C++ version 2.0.

Exemple de code

   /* Compile options needed: none   */    class A;   void fcn( A* );   class A   {   public:       virtual void f() = 0;       A() { fcn( this ); }   };   class B : A   {       void f() { }   };   void fcn( A* p )   {       p->f();   }   // The declaration below invokes class B's constructor, which   // first calls class A's constructor, which calls fcn. Then   // fcn calls A::f, which is a pure virtual function, and   // this causes the run-time error. B has not been constructed   // at this point, so the B::f cannot be called. You would not   // want it to be called because it could depend on something   // in B that has not been initialized yet.   B b;   void main()   {   }				
Problèmes similaires et solutions
Si vous continuez à rencontrer un problème semblable à celui décrit dans cet article, il peut s'agir d'un problème différent. Pour plus d'informations sur les problèmes similaires et les solutions, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft.
240437 Erreur d'exécution de Money : « R6025 - Appel de fonction virtuelle pure »
308260 Comment faire pour résoudre les erreurs de script dans Internet Explorer 6 et Internet Explorer 7 sur des ordinateurs Windows 2000, Windows XP, Windows Server 2003 ou Windows Vista
267572 WD2000 : Message d'erreur : « Erreur d'exécution '5' » au démarrage de Word
170409 SBFM97 : Erreurs d'exécution MS Visual C++ lors de l'importation de données Quickbooks
309299 Erreur d'exécution lorsque vous parcourez certaines pages Web
8.00 8.00c 9.00
Propriétés

ID d'article : 125749 - Dernière mise à jour : 04/10/2008 10:40:05 - Révision : 8.0

Microsoft Visual C++ 2008 Express Edition, Microsoft Visual C++ 2005 Express Edition, Microsoft Visual C++ .NET 2003 Initiation, Microsoft Visual C++ .NET 2002 Initiation, Microsoft Visual C++ 6.0 Édition Professionnelle, Microsoft Visual C++ 6.0 Édition Entreprise, Microsoft Visual C++, 32-bit Learning Edition 6.0, Microsoft Visual C++ 5.0 Édition Professionnelle, Microsoft Visual C++ 5.0 Édition Entreprise, Microsoft Visual C++ 4.2 Édition Professionnelle, Microsoft Visual C++ 4.1 Subscription, Microsoft Visual C++ 4.0 Édition Standard, Microsoft Visual C++ 2.1, Microsoft Visual C++ 2.0 Édition Professionnelle, Microsoft Visual C++ 1.52 Édition Professionnelle, Microsoft Visual C++ 1.51, Microsoft Visual C++ 1.5 Édition Professionnelle, Microsoft Visual C++ 1.0 Édition Professionnelle

  • kbresolve kbtshoot kbcompiler kbcpponly kberrmsg kbprb KB125749
Commentaires
ElementsByTagName("head")[0].appendChild(m);