Erro: É apresentada uma "erro fatal C1001: erro interno do compilador" Erro ao criar um objecto que é uma cópia de uma função virtual devolver o valor no Visual C++ 6.0

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: 226110
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Sintomas
Quando criar um objecto que é uma cópia de um valor devolvido da função virtual (um objecto temporário) utilizando o Construtor de fornecido pelo compilador cópia, poderá receber o seguinte erro:
Test.cpp(22): erro fatal C1001: erro interno do compilador
(compilador ficheiro 'msc1.cpp', linha 1794)
Escolha o comando de suporte técnico no Visual C++
Menu ' Ajuda ' ou abrir o ficheiro de ajuda de suporte técnico para mais informações

Consulte os passos para reproduzir na secção mais informação abaixo.
Resolução
Existem quatro formas de contornar o problema:
  1. Defina explicitamente um construtor de copiar. (Consulte a solução alternativa # 1 no código de exemplo abaixo).
  2. Remova a palavra-chave virtual a função que devolve o valor. (Consulte a solução alternativa # 2 no código de exemplo abaixo).
  3. Introduzir uma variável temporária para armazenar o valor devolvido. (Consulte a solução alternativa n.º 3 no código de exemplo abaixo).
  4. Remova suporte de compilador para processamento de excepções (C++) síncrono. Isto é conseguido através da remoção /GX (a predefinição do Visual Studio) das opções de compilação. (Consulte a solução alternativa n.º 4 no código de exemplo abaixo).
Solução n.º 1 é a solução recomendada, sempre que possível.

Nota : Se definir um construtor de cópia, também deve definir um operador de atribuição (operador =).
Ponto Da Situação
A Microsoft confirmou que este é um erro no Microsoft produtos listados no início deste artigo.

Este problema foi corrigido no Microsoft Visual C++ .NET.
Mais Informação
////////////////////////////////////////////////////////////////////// // cl /c /GX test.cpp// test.cpp(22) : fatal error C1001: INTERNAL COMPILER ERROR//  (compiler file 'msc1.cpp', line 1794) //  Please choose the Technical Support command on the Visual C++ //  Help menu, or open the Technical Support help file for more information////////////////////////////////////////////////////////////////////// class A{  public:    /* workaround #1, add an explicit copy constructor to class A */     // A(A& a) {};    ~A() {}; };class B{  public: /* workaround #2, remove virtual keyword from B::GetA */     virtual A& GetA(void);    void Func (void);};void B::Func (void){  A *att;  att=new A(GetA());  /* workaround #3, substitute the above line with the following two lines */   //A tmp = GetA();  //att=new A(tmp);}/* workaround #4, remove /GX compiler option */ 				
C1001 de ICE de erro de compilador interno

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 226110 - Última Revisão: 02/23/2014 16:08:13 - Revisão: 3.0

Microsoft Visual C++ 6.0 Enterprise Edition, Microsoft Visual C++ 6.0 Professional Edition, Microsoft Visual C++, 32-bit Learning Edition 6.0

  • kbnosurvey kbarchive kbmt kbtshoot kberrmsg kbbug kbcompiler kbfix kbnoupdate KB226110 KbMtpt
Comentários