Utilisation d'une variable membre comme argument par défaut en C
En C, il est possible de spécifier un argument par défaut pour une fonction membre en utilisant un membre variable. Cependant, tenter d'utiliser une fonction membre comme argument par défaut peut entraîner une erreur de compilation, comme le montre l'exemple ci-dessous.
class Object { protected: Point initPos; Point currPos; void MoveTo(double speed, Point position = initPos); }; void Object::MoveTo(double speed, Point position) { currPos = postion; }
Ce code rencontrera l'erreur de compilation suivante :
error: invalid use of non-static data member 'Object::initPos'
Raison de l'erreur
Les expressions d'argument par défaut dans les fonctions membres sont limitées à l'utilisation d'éléments au sein de la classe ou à la portée globale. Ici, le compilateur ne peut pas déterminer la valeur de la variable membre initPos lorsque la fonction est appelée, ce qui entraîne l'erreur.
Solution
Pour résoudre ce problème, utilisez la fonction surcharge avec l'approche suivante :
// Single-argument overload that defaults to initPos void Object::MoveTo(double speed) { MoveTo(speed, initPos); } // Two-argument overload that takes the explicit position void Object::MoveTo(double speed, Point position) { // Implementation here }
Avantages
Ceci La technique permet une gestion facultative des arguments dans les fonctions membres tout en conservant l’implémentation dans une seule méthode. Il suit le principe DRY (Don't Repeat Yourself) en évitant la duplication de code tout en offrant un moyen pratique de spécifier les valeurs par défaut.
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!