Popis chyby R6025 runtime jazyka Visual C++

Překlady článku Překlady článku
ID článku: 125749 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek popisuje problém, který může nastat při vývoji programu. Pokud stále dochází k problému, který se podobá Tento článek popisuje, může být jiný problém. Vyhledat problémy související s konkrétní problém, uveďte název produktu v hledání pro výsledky hledání omezit. Podobných problémů naleznete v části "podobné problémy a řešení" dále v tomto článku.

Příznaky

C++ program selže a následující spuštění sestavy Chyba:
Chyba runtime R6025
-čistý virtuálních funkcí volání

Příčina

K této chybě dojde, když aplikace nepřímo zavolá čistý virtuální členské funkce v kontextu, kdy je volání funkce není platné. Ve většině případů kompilátor to zjistí a ohlásí chybu při vytváření aplikace. Ale podle toho, jak váš kód je napsán, někdy problém je zjištěn pouze při spuštění.

Dochází k chybě při můžete nepřímo volání čistého virtuální funkce v rámci volání konstruktor nebo destruktoru základní třídy. Toto je zobrazeno v Ukázkový kód níže, s některé další popis.

Řešení

Volání čistého virtuální funkce je chyba vývoje, tak potřebujete najít volání funkce virtuální čistého a přepište kód tak, aby není volána.

Jedním způsobem, jak najít volání čistého virtuální funkce je čistý virtuální funkce nahradit implementace, která volá Funkce rozhraní Windows API DebugBreak. Při použití ladicí program, bude DebugBreak způsobit pevně zakódovaný bod přerušení. Když kód zastaví u této zarážky můžete zobrazit zásobník zobrazit, kde byla volána funkce.

Jiný způsob volání čistého virtuální funkce Najít je nastavit zarážku na funkci _purecall , která se nachází v PureVirt.c. Rozdělení na tato funkce má výhodu uchovávání zásobníku beze změny, takže můžete sledovat co dochází.

Prohlášení

Toto chování je návrh.

Další informace

Další informace naleznete "C Runtime chyby R6002 prostřednictvím R6025 "stránky v části "Chyby sestavení" v následujícím webu Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/aa277044 (VS.60) .aspx
Poznámka: Chyba R6025 nejsou dokumentovány v příručkách nebo v nápovědě online Visual C++ verze 2.x nebo níže. Však je stručně popsána v 3 Část souboru Readme.wri dodán s Visual C++ verze 2.0.

Ukázkový kód

   /* 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()
   {
   }
				

Podobné problémy a jejich řešení

Pokud stále dochází k podobné potíže, které tento článek popisuje problém, může být jiný problém. Další informace o podobných problémech a jejich řešení získáte v článcích báze Microsoft Knowledge Base:
240437Chyba za běhu peníze: "R6025-čistý virtuální funkce volání"
308260 Odstraňování potíží s chybami skriptů v aplikaci Internet Explorer 6 a Internet Explorer 7 v počítači se systémem Windows 2000, systémem Windows XP, systémem Windows Server 2003 nebo systémem Windows Vista
267572 WD2000: Chybová zpráva: "Run-time Error '5'" při spuštění aplikace Word
170409 SBFM97: MS Visual C++ Runtime chyby importu dat aplikace Quickbooks
309299 Chyba runtime při prohlížení webové stránky

Vlastnosti

ID článku: 125749 - Poslední aktualizace: 18. srpna 2012 - Revize: 12.0
Informace v tomto článku jsou určeny pro produkt:
  • 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
Klíčová slova: 
kbresolve kbtshoot kbcompiler kbcpponly kberrmsg kbprb kbmt KB125749 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku: 125749

Dejte nám zpětnou vazbu

 

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