Partilhar via


Erro do compilador C2659

'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
}