Utilisation d'une variable membre comme argument par défaut en C
Lors de la création de fonctions membres en C, il est souvent souhaitable de rendre certains arguments facultatifs et utiliser une variable membre comme valeur par défaut. Cependant, cela peut déclencher des erreurs de compilation si la variable membre n'est pas statique.
Considérez l'extrait de code suivant :
class Object { public: void MoveTo(double speed, Point position); protected: Point initPos; Point currPos; }; void Object::MoveTo(double speed, Point position = initPos) { currPos = postion; }
Tenter de compiler ce code entraînera le message d'erreur : "invalid utilisation du membre de données non statique 'Object::initPos'". Cela se produit car les expressions d'argument par défaut ne peuvent pas dépendre de membres non-classes.
Pour résoudre ce problème, vous devez utiliser deux surcharges de la méthode MoveTo :
void Object::MoveTo(double speed) { MoveTo(speed, initPos); } void Object::MoveTo(double speed, Point position) { currPos = postion; }
La méthode à argument unique appelle la méthode à deux arguments, en transmettant la valeur par défaut. Cela permet une seule implémentation de MoveTo tout en conservant la fonctionnalité souhaitée d'utilisation d'une variable membre par défaut.
En adhérant à ces techniques, vous pouvez utiliser efficacement les variables membres comme arguments par défaut dans les fonctions membres C sans avoir à faire face à la compilation. erreurs.
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!