Descrição do erro de tempo de execução R6025 no Visual C++

Traduções de Artigos Traduções de Artigos
Artigo: 125749 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo aborda um problema que poderá ocorrer quando estiver a desenvolver um programa. Se ainda estiver a ter um problema semelhante ao descrito neste artigo, poderá ser um problema diferente. Para procurar problemas relacionados com um problema específico, verifique inclua o nome do produto na procura para limitar os resultados. Para resolver problemas semelhantes, consulte a secção "problemas semelhantes e resoluções" deste artigo.

Sintomas

O programa C++ falha e comunica o seguinte erro de tempo de execução:
Erro de Runtime R6025
-chamada de função virtual puro

Causa

Este erro ocorre quando a aplicação indirectamente chama uma função de membro virtual puro num contexto em que uma chamada para a função não é válida. Na maioria dos casos, o compilador detecta-o e comunica o erro ao criar a aplicação. Mas dependendo de como o código é escrito, por vezes, o problema é detectado apenas em tempo de execução.

O erro ocorre quando chama uma função virtual pura no contexto de uma chamada do construtor ou processo de destruição de uma classe base abstracta indirectamente. Esta situação é ilustrada no código de exemplo abaixo, juntamente com alguns descrição mais.

Resolução

Chamar uma função virtual pura é um erro de programação, pelo que os necessita de localizar a chamada para a função virtual pura e reescrever o código para não for chamado.

Uma forma de encontrar uma chamada para uma função virtual pura é substituir a função virtual pura uma implementação chama a função de API do Windows DebugBreak . Quando utilizar o depurador, DebugBreak fará com que um ponto de interrupção codificados. Quando o código deixa de ser executados com este ponto de interrupção, pode ver a pilha de chamadas para ver onde a função foi chamada.

Outra forma de encontrar uma chamada para uma função virtual pura é definir um ponto de interrupção na função _purecall que se encontra no PureVirt.c. Última hora sobre esta função tem a vantagem de manter a pilha intactos, de modo que pode analisar o que está a ocorrer.

Ponto Da Situação

Este comportamento ocorre por predefinição.

Mais Informação

Para mais informações, consulte a página "C Run-Time erros R6002 através de R6025" da secção "Criar erros" no seguinte Web site da MSDN (Microsoft Developer Network):
http://msdn2.microsoft.com/en-us/library/aa277044(VS.60).aspx
Nota O erro R6025 não está documentado na ajuda online incluída com o Visual C++, versões 2.x ou anterior ou manuais. No entanto, por breves instantes é abordada na parte 3 do ficheiro Leiame.wri fornecido com o Visual C++ versão 2.0.

Exemplo de código

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

Problemas semelhantes e resoluções

Se ainda estiver a ter um problema semelhante o problema descrito neste artigo, poderá ser um problema diferente. Para obter mais informações sobre problemas semelhantes e resoluções, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:
240437Erro de tempo de execução do Money: "R6025 - pure virtual função chamada"
308260Como resolver erros de script no Internet Explorer 6 e no Internet Explorer 7 em computadores baseados no Windows 2000, baseado no Windows XP, baseado no Windows Server 2003 ou baseado no Windows Vista
267572WD2000: Mensagem de erro: "Run-time error '5'" quando inicia o Word
170409SBFM97: Importar dados QuickBooks de erros MS Visual C++ durante a execução
309299Erro de tempo de execução quando navega para algumas páginas Web

Propriedades

Artigo: 125749 - Última revisão: 13 de março de 2008 - Revisão: 8.0
A informação contida neste artigo aplica-se 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++ 6.0 Professional Edition
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 4.2 Professional Edition
  • Microsoft Visual C++ 4.1 Subscription
  • Microsoft Visual C++ 4.0 Standard Edition
  • Microsoft Visual C++ 2.1
  • Microsoft Visual C++ 2.0 Professional Edition
  • Microsoft Visual C++ 1.52 Professional Edition
  • Microsoft Visual C++ 1.51
  • Microsoft Visual C++ 1.5 Professional Edition
  • Microsoft Visual C++ 1.0 Professional Edition
Palavras-chave: 
kbmt kbresolve kbtshoot kbcompiler kbcpponly kberrmsg kbprb KB125749 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 125749

Submeter comentários

 

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