คำอธิบายข้อผิดพลาดขณะเรียกใช้ R6025 ใน c ++ Visual

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 125749 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความนี้กล่าวถึงปัญหาที่อาจเกิดขึ้นเมื่อคุณกำลังพัฒนาโปรแกรม หากคุณยังประสบปัญหาที่คล้ายกับปัญหาที่อธิบายในบทความนี้ นั่นอาจเป็นปัญหาชนิดอื่น การค้นหาปัญหาที่เกี่ยวข้องกับปัญหาเฉพาะ กรุณารวมชื่อผลิตภัณฑ์ในการค้นหาเพื่อจำกัดผลลัพธ์ของคุณ เมื่อต้องการแก้ไขปัญหาที่คล้ายกัน โปรดดูส่วน "ปัญหาที่คล้ายกันและวิธีแก้ปัญหา" ในบทความนี้

อาการ

โปรแกรม c ++ล้มเหลว และรายงานข้อผิดพลาดการทำต่อไปนี้:
ข้อผิดพลาดรันไทม์ R6025
-การเรียกฟังก์ชันเสมือน pure

สาเหตุ

ข้อผิดพลาดนี้เกิดขึ้นเมื่อโปรแกรมประยุกต์ของคุณโดยทางอ้อมเรียกฟังก์ชันสมาชิกเสมือน pure ในบริบทที่การเรียกฟังก์ชันไม่ถูกต้อง ในกรณีส่วนใหญ่ คอมไพเลอร์ตรวจพบนี้ และรายงานข้อผิดพลาดเมื่อสร้างแอพลิเคชัน แต่ทั้งนี้ก็ขึ้นอยู่กับวิธีเขียนรหัสของคุณ ในบางครั้งปัญหามีการตรวจพบเฉพาะเมื่อทำ

ข้อผิดพลาดเกิดขึ้นเมื่อคุณเรียกใช้ฟังก์ชันเสมือน pure ภายในบริบทของการเรียกการสร้างหรือ destructor ของคลาพื้นฐาน abstract โดยทางอ้อม ซึ่งจะมีภาพประกอบในโค้ดตัวอย่างด้านล่าง พร้อมด้วยคำอธิบายเพิ่มเติมบางอย่าง

การแก้ไข

การเรียกฟังก์ชันเสมือน pure มีข้อผิดพลาดการเขียนโปรแกรม ดังนั้นคุณต้องการเรียกฟังก์ชันการเสมือน pure การค้นหา และเขียนรหัสดังนั้นจะไม่ถูกเรียก

วิธีการหนึ่งในการค้นหาการเรียกฟังก์ชันเสมือน pure ถูกแทนที่ฟังก์ชันเสมือน pure ด้วยการใช้งานที่เรียกฟังก์ชัน Windows APIDebugBreak. เมื่อใช้ดีบักเกอร์DebugBreakจะทำให้เกิดเบรกพอยต์ที่ฮาร์ coded เมื่อรหัสหยุดทำงานที่เบรกพอยต์นี้ คุณสามารถดู callstack ให้ดูที่มีเรียกฟังก์ชัน

Another way to find a call to a pure virtual function is to set a breakpoint on the_purecallfunction that is found in PureVirt.c. Breaking on this function has the advantage of keeping the stack intact so that you can trace what is occurring.

สถานะ

ข้อมูลเพิ่มเติม

For more information, refer to the "C Run-Time Errors R6002 through R6025" page of the "Build Errors" section in the following Microsoft Developer Network (MSDN) Web site:
http://msdn2.microsoft.com/en-us/library/aa277044(VS.60).aspx
หมายเหตุ:The R6025 error is not documented in the manuals or online help included with Visual C++, versions 2.x or below. However, it is briefly discussed in Part 3 of the Readme.wri file shipped with Visual C++ version 2.0.

โค้ดตัวอย่าง

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

Similar problems and resolutions

If you are still experiencing a problem that resembles the problem that this article describes, it may be a different problem.For more information about similar problems and resolutions, click the following article numbers to view the articles in the Microsoft Knowledge Base:
240437Money runtime error: "R6025 -Pure virtual function call"
308260How to troubleshoot script errors in Internet Explorer 6 and in Internet Explorer 7 on Windows 2000-based, Windows XP-based, Windows Server 2003-based, or Windows Vista-based computers
267572WD2000: Error Message: "Run-time Error '5'" when you start Word
170409SBFM97: MS Visual C++ run-time errors importing Quickbooks data
309299Runtime error when you browse to some Web pages

คุณสมบัติ

หมายเลขบทความ (Article ID): 125749 - รีวิวครั้งสุดท้าย: 23 กันยายน 2554 - Revision: 3.0
ใช้กับ
  • Microsoft Visual C++ 2008 Express Edition
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C++ 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 kbmt KB125749 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:125749

ให้ข้อเสนอแนะ

 

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