CORRECÇÃO: Erro C2555 ocorre quando você compilar o código usando o Visual C++ .NET 2003

Traduções deste artigo Traduções deste artigo
ID do artigo: 839998 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Sintomas

Quando você cria um aplicativo usando o Microsoft Visual C++ .NET 2003, se você usar uma classe aninhada em uma classe derivada, o compilador gera erro C2555. A esse problema ocorre, você recebe uma mensagem de erro semelhante à seguinte:
Erro C2555: 'Dervied::NestedDerived::GetEditObject': substituindo a função virtual retornar tipo é diferente e não é covariant de ' Base::NestedBase:: GetEditObject '
Esse problema ocorre se a classe aninhada que você usar em classe derivada é derivada de uma classe aninhada na classe base. Esta mensagem de erro informa que os tipos de retorno não forem covariant. No entanto, os tipos de retorno são covariant.

Resolução

Um hotfix suportado agora está disponível da Microsoft, mas destina-se somente a corrigir o problema descrito neste artigo. Aplique-o somente nos sistemas que apresentarem esse problema específico. Esta correcção poderá submetida a testes adicionais. Portanto, se você não tiver sido gravemente afetado por esse problema, recomendamos que você aguarde o próximo Microsoft Visual Studio .NET 2003 que contém esse hotfix.

Para resolver esse problema imediatamente, contate o Atendimento Microsoft para obter o hotfix. Para obter uma lista completa de telefones do Atendimento Microsoft e informações sobre os custos de suporte da, visite o seguinte site:
http://support.microsoft.com/contactus/?ws=support
Observação Em alguns casos, as taxas cobradas pelas ligações para chamadas de suporte podem ser canceladas se um profissional de suporte da Microsoft determinar que uma atualização específica resolverá o problema. Os custos normais de suporte serão aplicados a questões e problemas que não se qualificam à atualização específica em questão de suporte adicionais.

A versão em inglês deste hotfix apresenta os atributos de arquivo (ou posteriores) listados na tabela a seguir. As datas e horas desses arquivos são listadas na acordo hora universal coordenada (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para encontrar a diferença entre o UTC e a hora local, use a guia fuso horário na ferramenta Data e hora no painel de controle.
   Date         Time   Version       Size       File name
   ------------------------------------------------------
   01-Apr-2004  01:12  13.10.4092.0    933,888  C1.dll
   01-Apr-2004  01:13  13.10.4092.0  2,207,744  C1xx.dll
   01-Apr-2004  07:49  13.10.4092.0  1,966,080  Feacp.dll
   01-Apr-2004  01:20                    5,342  Feacp.lib

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".

Mais Informações

Para reproduzir esse problema, compilar o código de exemplo a seguir:
//test.cpp
//cl test.cpp
//Error C2555
class Base 
{ 
public: 
        class NestedBase
        { 
        public: 
                virtual Base *   GetEditObject (); 
        }; 
        virtual NestedBase*        Edit () ; 
}; 

class Derived : public Base
{ 
public: 
        class NestedDerived : public NestedBase
        { 
        public: 
                virtual Derived*    GetEditObject(); 
        }; 
        virtual NestedDerived*        Edit () ; 
}; 
você recebe a seguinte mensagem de erro:
NEST.cpp(21): erro C2555: 'Dervied::NestedDerived::GetEditObject': substituindo a função virtual retornar tipo é diferente e não é covariant de ' Base::NestedBase:: GetEditObject ' nest.cpp(9): consulte declaração de 'Base:: NestedBase::GetEditObject'
Para obter informações adicionais sobre a terminologia que é usada para descrever as atualizações de produtos da Microsoft, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
824684Descrição da terminologia padrão que é usada para descrever as atualizações de software

Propriedades

ID do artigo: 839998 - Última revisão: segunda-feira, 15 de maio de 2006 - Revisão: 4.0
A informação contida neste artigo aplica-se a:
  • Microsoft Visual C++ .NET 2003 Standard Edition
Palavras-chave: 
kbmt kbvsnet2003presp1fix kbfix kbbug kbqfe kbhotfixserver KB839998 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 839998

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