Maison  >  Article  >  développement back-end  >  Erreur de syntaxe C++ : les fonctions non membres ne peuvent pas avoir ce pointeur, comment y faire face ?

Erreur de syntaxe C++ : les fonctions non membres ne peuvent pas avoir ce pointeur, comment y faire face ?

WBOY
WBOYoriginal
2023-08-22 08:38:06797parcourir

En programmation C++, le pointeur "this" est un concept très important. Il représente l'adresse de l'objet actuel et permet aux fonctions membres non statiques d'accéder aux variables membres et aux fonctions membres de l'objet actuel.

Cependant, en programmation C++, vous pouvez rencontrer une erreur : les fonctions non membres ne peuvent pas avoir ces pointeurs. Cette erreur est due au fait que l'utilisation de ce pointeur dans une fonction non membre signifie essentiellement accéder aux variables membres ou aux fonctions membres de l'objet actuel, mais la fonction non membre n'a pas d'instance de l'objet, donc une erreur de syntaxe se produira.

Alors, comment gérer cette erreur ?

Une solution simple consiste à convertir les fonctions non membres en fonctions membres. Les fonctions membres ont ces pointeurs, ce problème peut donc être résolu en convertissant les fonctions non membres en fonctions membres. Le processus de conversion est très simple. Il vous suffit d'ajouter le nom de la classe et l'analyseur de portée "::" avant le nom de la fonction dans la déclaration de la fonction. Par exemple, il y a une fonction non membre f dans la classe A, et maintenant vous voulez la convertir en fonction membre, vous pouvez faire ceci :

class A {
public:
    void f() {
        // ...
    }
};

Une autre solution consiste à transmettre l'adresse de l'objet actuel via des paramètres pour accéder variables membres et fonctions membres. Dans les fonctions non membres, vous pouvez transmettre l'adresse de l'objet actuel en tant que paramètre et utiliser des pointeurs pour faire fonctionner les variables membres et les fonctions membres dans la fonction. Par exemple :

class A {
public:
    int x;
    void f(int y) {
        x = y;
    }
};

void g(A* a) {
    a->f(10);
}

int main() {
    A a;
    g(&a);
    cout << a.x << endl; //Output: 10
    return 0;
}

Dans cet exemple, nous définissons une classe A, qui a une variable membre x et une fonction membre f. Dans la fonction non membre g, nous passons le pointeur vers l'objet actuel via le paramètre, puis appelons la fonction membre f dans la fonction pour faire fonctionner la variable membre x.

En général, le pointeur "this" est un concept très important, notamment en programmation C++. Lorsque vous rencontrez l'erreur selon laquelle les fonctions non membres ne peuvent pas avoir ces pointeurs, vous pouvez essayer de convertir la fonction en fonction membre ou de transmettre l'adresse de l'objet actuel via des paramètres pour faire fonctionner les variables membres et les fonctions membres.

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