Maison >développement back-end >C++ >Comment utiliser une variable membre comme argument par défaut dans les fonctions membres C ?

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

Susan Sarandon
Susan Sarandonoriginal
2024-11-14 18:11:02827parcourir

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;
}

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!

Déclaration:
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