Beschreibung des Laufzeitfehlers "R6025" in Visual C++

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 125749 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

In diesem Artikel wird ein Problem besprochen, das auftreten kann, wenn Sie ein Programm entwickeln. Tritt bei Ihnen weiterhin ein ähnliches Symptom auf wie im vorliegenden Artikel beschrieben, handelt es sich möglicherweise um ein anderes Problem. Um nach Problemen im Zusammenhang mit einem bestimmten Symptom zu suchen, geben Sie den Produktnamen in den Suchkriterien an, um die Ergebnisse einzugrenzen. Informationen zur Behebung ähnlicher Probleme finden Sie im Abschnitt "Ähnliche Probleme und Lösungen" weiter unten in diesem Artikel.

Problembeschreibung

Das C++-Programm C++ schlägt fehl und meldet den folgenden Laufzeitfehler:
Laufzeitfehler R6025
- rein virtueller Funktionsaufruf

Ursache

Dieser Fehler tritt auf, wenn Ihre Anwendung indirekt eine rein virtuelle Memberfunktion in einem Kontext aufruft, in dem ein Aufruf dieser Funktion aber nicht gültig ist. In den meisten Fällen wird dies beim Aufbau der Anwendung vom Compiler ermittelt und ein Fehler berichtet. Aber abhängig davon, wie Ihr Code geschrieben ist, wird das Problem manchmal nur bei der Ausführung entdeckt.

Dieser Fehler tritt auf, wenn Sie eine reine rein virtuelle Funktion indirekt im Kontext eines Aufrufes eines Konstruktors oder Destruktors einer abstrakten Basisklasse aufrufen. Dies wird im untenstehenden Beispielcode zusammen mit einigen weiteren Beschreibungen dargestellt.

Lösung

Der Aufruf einer rein virtuellen Funktion ist ein Programmierungsfehler. Sie müssen daher den Aufruf der rein virtuellen Funktion suchen und den Code neu schreiben, so dass sie nicht aufgerufen wird.

Ein Weg den Aufruf einer rein virtuellen Funktion zu finden ist, die rein virtuelle Funktion durch eine Implementierung zu ersetzen, die die Windows API-Funktion DebugBreak aufruft. Die Verwendung des Debuggers führt dazu, dass DebugBreak einen hart codierten Haltepunkt auslöst. Wenn der Code an diesem Haltepunkt stoppt, können Sie die Aufrufreihenfolge finden, um zu sehen, wo die Funktion aufgerufen wurde.

Eine weitere Möglichkeit, einen Aufruf einer rein virtuellen Funktion zu finden, besteht darin, einen Haltepunkt in der Funktion _purecall zu setzen, die sich in "PureVirt.c" befindet. Ein Haltepunkt bei dieser Funktion hat den Vorteil, dass der Stapel intakt bleibt, sodass Sie verfolgen können, was geschieht.

Status

Es handelt sich hierbei um ein beabsichtigtes Verhalten.

Weitere Informationen

Weitere Informationen finden Sie auf der Seite "C Run-Time Errors R6002 through R6025" im Abschnitt "Build Errors" der folgenden Microsoft Developer Network (MSDN)-Website:
http://msdn2.microsoft.com/de-de/library/aa277044(VS.60).aspx
Hinweis Der Fehler R6025 ist weder in den Handbüchern noch in der Onlinehilfe, die zum Lieferumfang von Visual C++ Version 2.x oder niedriger gehören, dokumentiert. Er wird aber in Teil 3 der Datei "Readme.wri" kurz beschrieben, die mit Visual C++ Version 2.0 ausgeliefert wird.

Beispielcode

   /* Erforderliche Kompilierungsoptionen: Keine
   */ 

   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();
   }

   // Die nachstehende Deklaration ruft den Konstruktor von Klasse B auf, der
   // zunächst den Konstruktor von Klasse A aufruft, welcher fcn aufruft. Dann
   // ruft fcn die rein virtuelle Funktion A::f auf, und
   // dies verursacht den Laufzeitfehler. B wurde zu diesem Zeitpunkt noch
   // nicht erstellt. Daher kann B::f nicht aufgerufen werden. Der Aufruf wäre
   // auch nicht wünschenswert, da er von etwas in B abhängig
   // abhängig ist, das noch nicht initialisiert wurde.

   B b;

   void main()
   {
   }
				

Ähnliche Probleme und Lösungen

Wenn bei Ihnen weiterhin ein ähnliches Problem wie das im vorliegenden Artikel beschriebene auftritt, handelt es sich möglicherweise um ein anderes Problem. Weitere Informationen zu ähnlichen Problemen finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:
240437 Money-Laufzeitfehler: "R6025 - rein virtueller Funktionsaufruf"
308260 Problembehebung bei Skriptfehlern in Internet Explorer 6 und Internet Explorer 7 auf Windows 2000-basierten, Windows XP-basierten, Windows Server 2003-basierten oder Windows Vista-basierten Computern
267572 WD2000: Fehlermeldung: "Laufzeitfehler '5'" beim Start von Word
170409 SBFM97: MS Visual C++-Laufzeitfehler beim Import von Quickbooks-Daten
309299 Laufzeitfehler beim Browsen zu bestimmten Webseiten
Hinweis Dies ist ein Artikel, der im Schnellverfahren direkt von der Microsoft-Supportorganisation erstellt wurde. Die hierin enthaltenen Informationen werden als Reaktion auf neue Probleme wie besehen bereitgestellt. Da dieser Artikel im Schnellverfahren erstellt wurde, kann er Tippfehler enthalten und zu einem späteren Zeitpunkt ohne vorherige Ankündigung überarbeitet werden. Weitere zu berücksichtigende Informationen finden Sie in den Nutzungsbedingungen.

Eigenschaften

Artikel-ID: 125749 - Geändert am: Montag, 27. Januar 2014 - Version: 1.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual C++ 2008 Express Edition
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C++ .NET 2002 Standard Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 2.0 Professional Edition
  • Microsoft Visual C++ 1.5 Professional Edition
Keywords: 
kbresolve kbtshoot kbcompiler kbcpponly kberrmsg kbprb KB125749
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com