Passer des paramètres par référence avec des valeurs par défaut en C
En C , lors du passage de paramètres par référence, il n'est pas possible d'attribuer une valeur par défaut valeur au paramètre. Cela génère une erreur lors de la tentative de déclaration de fonctions avec des valeurs par défaut pour les paramètres de référence. Par exemple, le code suivant entraînera une erreur :
virtual const ULONG Write(ULONG &State = 0, bool sequence = true);
Erreur rencontrée :
error C2440: 'default argument' : cannot convert from 'const int' to 'unsigned long &' A reference that is not to 'const' cannot be bound to a non-lvalue
Résolution
Les valeurs par défaut ne peuvent être attribué à des références const, pas à des références non const. Cela est dû à la restriction de C selon laquelle une valeur temporaire (telle que la valeur par défaut) ne peut pas être liée à une référence non const.
Comme solution de contournement, vous pouvez utiliser une instance réelle comme valeur par défaut :
static int AVAL = 1; void f( int &x = AVAL ) { // stuff } int main() { f(); // equivalent to f(AVAL); }
Cependant, cette approche a une applicabilité pratique limitée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!