Maison > développement back-end > C++ > Pourquoi ma classe Matrix `

Pourquoi ma classe Matrix `

Patricia Arquette
Libérer: 2024-12-18 08:43:14
original
932 Les gens l'ont consulté

Why Does My Matrix Class's `

Surcharge ambiguë de << Opérateur pour ostream

L'erreur rencontrée lors de la tentative de surcharge du << L’opérateur pour une classe Matrix découle de l’exigence selon laquelle la fonction opérateur doit prendre exactement un argument. Dans ce cas, l'erreur est probablement due au code suivant :

std::ostream&amp; Matrix::operator <<(std::ostream&amp; stream, const Matrix&amp; matrix) {

    [...]

}
Copier après la connexion

Puisque l'opérateur<< La fonction est définie comme une fonction membre de la classe Matrix, elle prend implicitement l'objet Matrix comme argument. De ce fait, la fonction prend en fait deux arguments : l'objet ostream et l'objet Matrix.

Pour résoudre ce problème, vous avez deux options :

  1. Utiliser une fonction ami : Une fonction ami n'est pas membre de la classe mais a accès à ses membres privés et protégés. En définissant l'opérateur<< fonctionner comme une fonction amie, vous pouvez éviter l'argument implicite de l'objet Matrix.

    friend std::ostream&amp; operator<< (std::ostream&amp; stream, const Matrix&amp; matrix) {
        [...]
    }
    Copier après la connexion
  2. Passez l'objet Matrix comme référence : En passant l'objet Matrix comme une référence, vous pouvez éviter l'argument implicite de l'objet Matrix.

    std::ostream&amp; operator<< (std::ostream&amp; stream, const Matrix&amp; matrix) const {
        [...]
    }
    Copier après la connexion

Notez que la deuxième option nécessite le opérateur≪≪ fonction à déclarer comme const puisqu'elle ne modifie pas l'objet Matrix.

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