Visual C++ で R6025 実行時エラーの説明

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:125749
概要
この資料では、プログラムを開発している場合に発生する問題について説明します。この資料で説明するような問題が引き続き発生する場合は、別の問題があります。特定の問題に関連する問題を検索するに記入してください製品名で検索結果を絞り込むために。同様の問題のトラブルシューティングを行うには、この資料の「類似した問題と解決方法」セクションを参照していますください。
現象
C++ プログラムは失敗し、次の実行時エラーを報告します。
ランタイム エラー R6025
- pure virtual function call
原因
このエラーは、アプリケーションを間接的に呼び出す純粋仮想メンバー関数のコンテキストで、関数の呼び出しが有効ではない場合に発生します。ほとんどの場合は、コンパイラはこれを検出し、アプリケーションをビルドするときにエラーを報告します。ですが、コードの記述方法によっても、問題が検出される実行時にのみです。

間接的な呼び出し、コンス トラクターの呼び出しのコンテキストまたは抽象基本クラスのデストラクター内の純粋仮想関数の場合に、エラーが発生します。これは、いくつかの詳細説明と共に、次のサンプル コードに示します。
解決方法
純粋仮想関数を呼び出すことは、プログラミングのエラーでは、純粋仮想関数の呼び出しを検索し、それが呼び出されないように、コードを書き換える必要があります。

純粋仮想関数呼び出しを検索する方法の 1 つは、実装では、Windows API 関数DebugBreakを呼び出すと、純粋仮想関数を置換します。デバッガーを使用している場合、 DebugBreakにハードコード ブレークポイントが発生します。コードのこのブレークポイントで実行が停止、ときに、関数が呼び出されたを表示する呼び出し履歴を表示できます。

純粋仮想関数の呼び出しを検索する別の方法では、PureVirt.c 内にある_purecall関数にブレークポイントを設定します。この関数の点では、何が発生してトレースできるように、スタックを保持することの利点があります。
状況
これは仕様による動作です。
詳細
詳細については、次の Microsoft Developer Network (MSDN) Web サイトのビルド エラー」セクションの「C ランタイム エラー R6002 から R6025」ページを参照してください。<b>R6025 エラーは、マニュアルまたは Visual C++ のバージョンに付属のオンライン ヘルプで文書化されていない 2.x または以下です。ただし、それは簡単に説明した Visual C++ バージョン 2.0 に付属する Readme.wri ファイルの第 3 部で。

サンプル コード

   /* 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()   {   }				
類似した問題と解決策
この資料に記載された問題と類似した問題が引き続き発生する場合は、別の問題がある可能性があります。 同様の問題と解決方法については、マイクロソフト サポート技術情報の記事を表示するのには次の資料番号をクリックします。
240437 Money ランタイム エラー:"R6025-純粋仮想関数呼び出し"
308260 スクリプト エラー Internet Explorer 6 および Internet Explorer 7 で Windows 2000 ベース、Windows XP ベース、Windows Server 2003 ベースまたは Windows Vista ベースのコンピューターでのトラブルシューティング方法
267572 Wd 2000: エラー メッセージ:「実行時エラー '5'」Word を起動したとき
170409 Quickbooks のデータをインポートする MS Visual C++ 実行時エラーは SBFM97。
309299 一部の Web ページを参照するときにランタイム エラーが発生します。
8.00 8.00 c 9.00

警告: この記事は自動翻訳されています

Proprietà

ID articolo: 125749 - Ultima revisione: 07/03/2016 13:55:00 - Revisione: 24.0

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

  • kbresolve kbtshoot kbcompiler kbcpponly kberrmsg kbprb kbmt KB125749 KbMtja
Feedback