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

Puis-je utiliser des variables membres comme arguments par défaut dans les méthodes C ?

Mary-Kate Olsen
Libérer: 2024-11-14 14:37:01
original
623 Les gens l'ont consulté

Can I Use Member Variables as Default Arguments in C   Methods?

Utilisation de variables membres comme arguments par défaut en C

Introduction

Lors de la création d'une classe avec des méthodes qui prennent plusieurs arguments, il peut être avantageux de faire certains arguments sont facultatifs. En utilisant la fonctionnalité d'argument par défaut, vous pouvez définir une valeur par défaut pour un argument qui peut être utilisée lorsqu'aucune valeur n'est fournie par le code client.

Problème : Utilisation de variables membres non statiques comme arguments par défaut

Dans votre cas, vous avez tenté d'utiliser une variable membre (initPos) comme argument par défaut pour votre fonction membre MoveTo. Cependant, le compilateur a émis une erreur indiquant une utilisation non valide d'une donnée membre non statique.

Analyse du problème

Les variables membres ne sont pas accessibles par défaut dans la portée de la méthode, car elles sont considérées comme faisant partie de l'état de l'objet et non du contexte de la méthode. Par conséquent, par défaut, les arguments dans les fonctions membres ne peuvent dépendre que d'éléments de portée globale ou en classe.

Solution : surcharge de méthode

Pour résoudre ce problème, vous devez recourir à la surcharge de méthode. . La surcharge de méthode vous permet de créer plusieurs versions de la même méthode avec des signatures différentes. Voici comment l'implémenter dans votre code :

// Object.h
class Object
{
public:
    ...
    void MoveTo(double speed);
    void MoveTo(double speed, Point position);

protected:
    Point initPos; 
    Point currPos;

};
Copier après la connexion
// Object.c
void Object::MoveTo(double speed)
{
    MoveTo(speed, initPos);
}

void Object::MoveTo(double speed, Point position)
{
    // Everything is done here.
}
Copier après la connexion

En définissant deux versions de la méthode MoveTo, vous pouvez effectivement fournir un argument par défaut sans vous appuyer directement sur la variable membre. La méthode MoveTo(double) appelle la méthode MoveTo(double, Point) avec la valeur initPos comme deuxième argument, vous permettant de conserver la fonctionnalité souhaitée et d'éviter les erreurs du compilateur.

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