Maison  >  Article  >  développement back-end  >  Erreur de compilation C++ : les opérateurs surchargés doivent avoir au moins un paramètre de type de classe. Comment dois-je le modifier ?

Erreur de compilation C++ : les opérateurs surchargés doivent avoir au moins un paramètre de type de classe. Comment dois-je le modifier ?

WBOY
WBOYoriginal
2023-08-22 16:24:30862parcourir

Erreur de compilation C++ : les opérateurs surchargés doivent avoir au moins un paramètre de type de classe. Comment dois-je le modifier ?

Erreur de compilation C++ : Les opérateurs surchargés doivent avoir au moins un paramètre de type de classe. Comment dois-je le modifier ?

En C++, nous pouvons personnaliser le comportement des opérateurs en surchargeant les opérateurs. Cependant, lors de la surcharge des opérateurs, nous devons faire attention aux types de paramètres. L'une des erreurs de compilation les plus courantes est « l'opérateur surchargé doit avoir au moins un paramètre de type de classe ». Cet article explique la cause de cette erreur et comment la corriger.

  1. Pourquoi cette erreur se produit-elle ?

Les opérateurs surchargés sont des fonctions définies à l'aide du mot-clé "opérateur" et ils peuvent accepter des paramètres comme les fonctions normales. C++ stipule que les opérateurs surchargés doivent avoir au moins un paramètre de type de classe, car l'opérateur est utilisé pour faire fonctionner des objets de classe et au moins un paramètre de type de classe est requis pour effectuer cette opération.

Par exemple, lorsque nous définissons une classe appelée "myClass" et y ajoutons un opérateur "+", nous devons passer au moins un paramètre de type "myClass" pour effectuer l'opération d'ajout. Si nous définissons un opérateur sans paramètre de type de classe, le compilateur ne reconnaîtra pas l'opérateur.

  1. Comment corriger cette erreur ?

Méthode 1 : Ajouter un paramètre de type de classe

La solution la plus courante consiste à ajouter un paramètre de type de classe à l'opérateur comme ceci :

class myClass{
  public:
    int val;
    myClass operator+(const myClass& other){
        myClass result;
        result.val = this->val + other.val;
        return result;
  }
};

Dans le code ci-dessus, nous avons ajouté un paramètre de type de classe pour le "+" opérateur Un paramètre de type myClass nommé "other" via lequel deux objets myClass peuvent être ajoutés.

Méthode 2 : Utiliser des fonctions globales

Les opérateurs surchargés peuvent également être définis à l'aide de fonctions globales. Si vous utilisez une fonction globale pour surcharger un opérateur, vous n'avez pas besoin d'un paramètre de type de classe et utilisez des paramètres de type ordinaires pour effectuer l'opération.

Par exemple, nous pouvons définir l'opérateur "+" de la manière suivante :

class myClass{
  public:
    int val;
};

myClass operator+(const myClass& obj1, const myClass& obj2){
    myClass result;
    result.val = obj1.val + obj2.val;
    return result;
}

Dans le code ci-dessus, nous avons surchargé l'opérateur "+" en définissant une fonction globale. Dans cette fonction, nous acceptons deux références constantes d'objets myClass comme paramètres et renvoyons l'objet myClass comme résultat de l'opération.

Méthode 3 : Utiliser les fonctions ami

Une autre façon de corriger cette erreur consiste à utiliser les fonctions ami. En C++, vous pouvez utiliser le mot-clé « friend » pour déclarer une fonction non membre dans une classe afin que la fonction puisse accéder aux membres privés de la classe.

Ensuite, nous pouvons surcharger l'opérateur "+" de la manière suivante :

class myClass{
  friend myClass operator+(myClass obj1, myClass obj2){
    myClass result;
    result.val = obj1.val + obj2.val;
    return result;
  }
  public:
    int val;
};

Dans le code ci-dessus, nous utilisons une fonction ami pour surcharger l'opérateur "+". En déclarant la fonction comme fonction amie dans la classe myClass, vous pouvez accéder directement aux membres privés de la classe. À ce stade, nous transmettons deux objets myClass comme paramètres à la fonction et renvoyons l'objet myClass comme résultat de l'opération.

Résumé :

Les opérateurs surchargés sont une fonctionnalité puissante du C++ qui peut nous aider à personnaliser le comportement des opérateurs. Cependant, lors de la surcharge des opérateurs, vous devez faire attention aux types de paramètres pour éviter les erreurs de compilation. Si vous obtenez l’erreur « L’opérateur surchargé doit avoir au moins un paramètre de type de classe », vous pouvez utiliser l’une des méthodes ci-dessus pour la corriger.

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