Partilhar via


Erro do compilador C3854

expressão à esquerda de '=' resulta em uma função. Não é possível atribuir a uma função (uma função não é um valor l)

Observações

Uma referência não pode ser reinicializada. A desreferenciação de uma referência a uma função produz uma função, que é um "rvalue", ao qual não se pode atribuir valores. Portanto, você não pode atribuir através de uma referência a uma função.

Example

O exemplo a seguir gera C3854:

// C3854.cpp
int afunc(int i)
{
   return i;
}

typedef int (& rFunc_t)(int);
typedef int (* pFunc_t)(int);

int main()
{
   rFunc_t rf = afunc;   // OK binding a reference to function
   pFunc_t pf = &afunc;   // OK initializing a pointer to function

   *pf = &afunc;   // C3854
   // try the following line instead
   // pf = &afunc;
   *rf = &afunc;   // C3854
}