Maison > développement back-end > C++ > le corps du texte

Comment utiliser une variable membre comme argument par défaut dans les fonctions membres C ?

Susan Sarandon
Libérer: 2024-11-14 18:11:02
original
769 Les gens l'ont consulté

How to Use a Member Variable as a Default Argument in C   Member Functions?

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;
}
Copier après la connexion

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;
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal