Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
'operador' : função como operando esquerdo
Observações
Uma função encontrava-se à esquerda do operador especificado. A razão mais comum para este erro é que o compilador analisou o identificador no lado esquerdo do operador como uma função quando o desenvolvedor pretendia que fosse uma variável. Para obter mais informações, consulte o artigo da Wikipédia Análise mais vexatória.
Examples
Este exemplo mostra uma declaração de função e uma definição de variável que são facilmente confundidas:
// C2659a.cpp
// Compile using: cl /W4 /EHsc C2659a.cpp
#include <string>
using namespace std;
int main()
{
string string1(); // string1 is a function returning string
string string2{}; // string2 is a string initialized to empty
string1 = "String 1"; // C2659
string2 = "String 2";
}
Para resolver esse problema, altere a declaração do identificador para que ele não seja analisado como uma declaração de função.
O erro C2659 também pode ocorrer quando a função tem um tipo que não pode ser usado na expressão no lado esquerdo do operador especificado. Este exemplo gera C2659 quando o código atribui um ponteiro de função a uma função:
// C2659b.cpp
// Compile using: cl /W4 /EHsc C2659b.cpp
int func0(void) { return 42; }
int (*func1)(void);
int main()
{
func1 = func0;
func0 = func1; // C2659
}