Descrizione dell'errore di run-time R6025 in Visual C++

Traduzione articoli Traduzione articoli
Identificativo articolo: 125749 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene descritto un problema che può verificarsi quando si sviluppa un programma. Se si verifica un problema analogo a quello descritto in questo articolo, potrebbe essere un problema diverso. Per individuare i problemi relativi a un problema specifico, includere il nome del prodotto nella ricerca per restringere i risultati. Per risolvere problemi analoghi, vedere la sezione "problemi e soluzioni analoghi" più avanti in questo articolo.

Sintomi

Errore del programma C++ che restituisce il seguente errore di run-time:
Errore di runtime R6025
-chiamata di funzione virtuale pura

Cause

Questo errore si verifica quando l'applicazione chiama indirettamente una funzione membro virtual pure in un contesto di cui una chiamata alla funzione non è valida. Nella maggior parte dei casi, il compilatore rileva la condizione e segnala l'errore durante la compilazione dell'applicazione. Ma, a seconda della modalità di scrittura del codice, in alcuni casi il problema viene rilevato solo in fase di esecuzione.

L'errore si verifica quando si chiama indirettamente una funzione virtuale pura all'interno del contesto di una chiamata al costruttore o distruggitore di una classe base astratta. Come illustrato nell'esempio di codice riportato di seguito, con alcune ulteriori descrizione.

Risoluzione

Chiamare una funzione virtuale pura è un errore di programmazione, pertanto è necessario individuare la chiamata alla funzione virtuale pura e riscrivere il codice in modo che non viene chiamato.

Per trovare una chiamata a una funzione virtuale pura sostituire la funzione virtuale pura con un'implementazione che chiama la funzione Windows API DebugBreak. Quando si utilizza il debugger, DebugBreak causerà un punto di interruzione a livello di codice. Quando il codice si interrompe a questo punto di interruzione, è possibile visualizzare lo stack di chiamate per vedere dove è stata chiamata la funzione.

Un altro modo per trovare una chiamata a una funzione virtuale pura consiste nell'impostare un punto di interruzione sulla funzione _purecall che si trova in PureVirt.c. Interruzione di questa funzione ha il vantaggio di mantenendo intatto lo stack in modo da identificare che cosa sta avvenendo.

Status

Questo comportamento è legato alla progettazione.

Informazioni

Per ulteriori informazioni, vedere la pagina "C Run-Time errori da R6002 a R6025" della sezione "Errori di compilazione" nel seguente sito Web Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/aa277044 (VS.60).aspx
Nota. L'errore R6025 non documentato nella Guida in linea di Visual C++, versioni o manuali 2. x o inferiore. Tuttavia, viene brevemente descritto nella parte 3 del file wri fornito con Visual C++ versione 2.0.

Codice di esempio

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

Problemi e soluzioni analoghi

Se si verifica un problema analogo a quello descritto in questo articolo, potrebbe essere un problema diverso. Per ulteriori informazioni su problemi e soluzioni analoghi, fare clic sui numeri per visualizzare gli articoli della Microsoft Knowledge Base:
240437 Errore di runtime di Money: "R6025-chiamata di funzione virtuale pura"
308260 Come risolvere gli errori di script in Internet Explorer 6 e Internet Explorer 7 su computer basati su Windows 2000, basato su Windows XP, basato su Windows Server 2003 o basato su Windows Vista
267572 WD2000: Messaggio di errore: "errore di Run-time '5'" quando si avvia Word
170409 SBFM97: Errori di runtime di MS Visual C++ l'importazione dei dati Quickbooks
309299 Errore di runtime durante l'esplorazione di alcune pagine Web

Proprietà

Identificativo articolo: 125749 - Ultima modifica: lunedì 3 marzo 2014 - Revisione: 9.0
Le informazioni in questo articolo si applicano a:
  • 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
Chiavi: 
kbresolve kbtshoot kbcompiler kbcpponly kberrmsg kbprb kbmt KB125749 KbMtit
Traduzione automatica articoli
IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l?obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 125749
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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