Você receber uma mensagem de erro de C2061 compilador em diferentes versões do 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 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: 815646
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sintomas
Este artigo descreve a mensagem de erro de compilador C2061 que é recebida em diferentes versões do Microsoft Visual C++.

No Microsoft Visual C++ 6.0 e no Microsoft Visual C++. NET, você receber a seguinte mensagem de erro:
Erro de sintaxe do compilador erro C2061: identificador 'identificador'
No Visual C++ .NET 2002, também poderá receber a seguinte mensagem de erro:
Erro C2947: esperando ' > 'para finalizar a lista de parâmetro de modelo, encontrado' > '
No Visual C++ .NET 2003, você também receberá a seguinte mensagem de erro:
Aviso C4346: 'T::type': nome do dependente não é um prefixo de tipo com 'typename' para indicar um tipo.
Situação
Esse comportamento é por design.
Mais Informações

O Visual C++ 6.0

No Visual C++ 6.0, um erro do compilador C2061 ocorre quando você colocar um inicializador entre parênteses. Para resolver esse comportamento, coloque o declarador entre parênteses ou defina o declarador como typedef . Esse código especifica dois correções:
class X {};class Y {};class Z {};class W : public  X, public Y, public Z {};void func ( W* pW ){    // This will cause a Compiler Error C2061 in Visual C++ 6.0.    X* pX ( pW );     // Error: unexpected identifier 'pW'    // To fix the Compiler Error C2061 in Visual C++ 6.0,    // Either enclose the declarator in parentheses:    Y ( *pY ) ( pW ); // The declarator is now in parentheses.    // Or define the declarator as typedef:    typedef Z *pZ_t;    pZ_t pZ ( pW );   // The Z declarator is defined as typedef.}

O Visual C++ .NET 2002

No entanto, o código o "Visual C++ 6.0" seção não causa um erro no Visual C++ .NET 2002. No Visual C++ .NET 2002, o código a seguir causa o erro C2061 quando ele é compilado com a opção de compilador /Za . Você também pode receber um erro C2947 com o erro C2061.
	template <class T, T::type (*pFunc)() >

O Visual C++ .NET 2003

No Visual C++ .NET 2003, o erro C2061 ocorre quando o compilador detecta uma expressão como um argumento de modelo de classe. Você recebe o erro C2061 mesmo quando a opção de compilador /Za não for usada. Com o erro C2061, você também pode receber um erro de C2947 e um erro C4346.

Você pode modificar o código no Visual C++ .NET 2003 usando a palavra-chave typename como segue: modelo
	template <class T, typename T::type (*pFunc)() >	void MyFunction();
quando você usa o parâmetro do modelo como um tipo , você deve usar a palavra-chave typename . Acordo com a padrões de C++ ANSI, um nome qualificado que faça referência a um especificador de tipo do tipo e que depende de um parâmetro do modelo deve ser precedido pela palavra-chave typename .

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 815646 - Última Revisão: 12/08/2015 02:10:24 - Revisão: 1.2

Microsoft Visual C++ .NET 2003 Standard Edition, Microsoft Visual C++ .NET 2002 Standard Edition, Microsoft Visual C++ 6.0 Service Pack 5

  • kbnosurvey kbarchive kbmt kbprod2web kbprb kbtemplate kbcompiler KB815646 KbMtpt
Comentários