CORRECÇÃO: C2555 em funções virtuais com tipos de retorno covariant

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: 240862
Sintomas
Você pode receber a seguinte mensagem de erro se você tentar substituir uma função virtual com um tipo covariant de retorno:
Erro C2555: 'B::function': substituindo a função virtual difere from'A::function ' somente por retornar convenção de chamada ou tipo
Consulte o código de exemplo na seção "Mais informações" para obter detalhes.
Causa
O compilador não suporta funções virtuais com tipos de retorno covariant conforme especificado no padrão C++, seção 10.3, que é cotado abaixo: 5-O tipo de retorno de uma função substituição deve ser idêntico ao tipo de retorno de função substituído ou covariant com as classes das funções. Se uma função D::f substitui uma função B::f, os tipos de retorno das funções são covariant se eles satisfizerem os critérios a seguir:
  • ambos são ponteiros para classes ou referências a classes
  • a classe no tipo de retorno de B::f é a mesma classe como a classe no tipo de retorno de D::f ou, é uma inequívoca classe de base direta ou indireta da classe no tipo de retorno de D::f e está acessível no D
  • ponteiros ou referências de tem o mesmo VC-qualificação e o tipo de classe no tipo de retorno de D::f tem a mesma qualificação VC como ou menos qualificação VC que o tipo de classe no tipo de retorno de B::f.
Situação
A Microsoft confirmou que esse é um problema nos produtos da Microsoft listados no começo deste artigo.

Esse problema foi corrigido no Microsoft Visual C++. NET.
Mais Informações

Etapas para reproduzir o problema

O código de exemplo a seguir demonstra o erro:
//test.cpp// compiler option needed: none#include "stdafx.h"class A     {      public:	virtual A* function();     };	class B : public A     {      public:	 B* function();     };

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 240862 - Última Revisão: 07/05/2005 22:06:53 - Revisão: 1.1

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

  • kbmt kbbug kbcompiler kbcpponly kbfix kbnoupdate KB240862 KbMtpt
Comentários