Partager via


Erreur du compilateur C3854

l’expression à gauche de '=' correspond à une fonction. Assignation à une fonction impossible (une fonction n’est pas une l-value)

Une référence ne peut pas être réinitialisée. La déréférencement d’une référence à une fonction génère une fonction, qui est une valeur rvalue, à laquelle vous ne pouvez pas affecter. Par conséquent, vous ne pouvez pas affecter par le biais d’une référence à une fonction.

L’exemple suivant génère l’erreur 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
}