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

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
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): 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
c 8.00 8.00 9,00

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 125749 - Última Revisão: 03/13/2008 20:02:27 - Revisão: 8.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++ 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

  • kbmt kbresolve kbtshoot kbcompiler kbcpponly kberrmsg kbprb KB125749 KbMtpt
Comentários