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

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

Sintomas

Quando cria uma aplicação utilizando o Microsoft Visual C++ .NET 2003, se utilizar uma classe aninhada na classe derivada, o compilador gera erro C2555. Quando este problema ocorre, recebe uma mensagem de erro semelhante à seguinte:
Erro C2555: 'Dervied::NestedDerived::GetEditObject': substituir função virtual devolver tipo é diferente e não co-variante de ' Base::NestedBase:: GetEditObject '
Este problema ocorre se a classe aninhada que utiliza na classe derivada deriva de uma classe aninhada na classe base. Esta mensagem de erro indica que os tipos de retorno não são co-variante. No entanto, os tipos de retorno são co-variante.

Resolução

Agora é disponibilizada pela Microsoft uma correcção suportada, mas destina-se apenas a corrigir o problema descrito neste artigo. Aplique-a apenas em sistemas que tenham este problema específico. Esta correcção poderá submetida a testes adicionais. Por conseguinte, se não estiver a ser gravemente afectado por este problema, recomendamos que aguarde o próximo Microsoft Visual Studio .NET 2003 que contenha esta correcção.

Para resolver este problema imediatamente, contacte o suporte técnico da Microsoft para obter a correcção. Para obter uma lista completa de números de telefone do suporte técnico da Microsoft e informações sobre os custos de suporte, visite o seguinte Web site da Microsoft:
http://support.microsoft.com/contactus/?ws=support
Nota Em casos especiais, os custos normalmente inerentes às chamadas de suporte poderão ser anulados, se um técnico de suporte da Microsoft determinar que uma actualização específica resolverá o problema. Os custos normais do suporte serão aplicados a problemas adicionais e questões de suporte que não se enquadrem na atualização específica em questão.

A versão inglesa desta correcção tem os atributos de ficheiro (ou posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são indicadas no formato de universal hora (UTC) coordenada Coordinated. Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador fuso horário na ferramenta Data e hora no painel de controlo.
   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

Ponto Da Situação

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

Mais Informação

Para reproduzir este problema, compilar o código de exemplo seguinte:
//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 () ; 
}; 
recebe a seguinte mensagem de erro:
nest.cpp(21): erro C2555: 'Dervied::NestedDerived::GetEditObject': substituir função virtual devolver tipo é diferente e não co-variante de ' Base::NestedBase:: GetEditObject ' nest.cpp(9): consulte a declaração de 'Base:: NestedBase::GetEditObject'
Para obter informações adicionais sobre a terminologia utilizada para descrever actualizações de produtos Microsoft, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
824684Descrição da terminologia padrão utilizada para descrever actualizações de software da Microsoft

Propriedades

Artigo: 839998 - Última revisão: 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 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: 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