Maison développement back-end C++ 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 ?

Aug 22, 2023 am 08:38 AM
erreur de syntaxe c++ fonction non membre ce pointeur

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() {
        // ...
    }
};
Copier après la connexion

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;
}
Copier après la connexion

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment résoudre l'erreur de syntaxe C++ : « expression primaire attendue avant », jeton » ? Comment résoudre l'erreur de syntaxe C++ : « expression primaire attendue avant », jeton » ? Aug 25, 2023 pm 07:30 PM

Comment résoudre l'erreur de syntaxe C++ : « expectedprimary-expressionbefore », « jeton » ? Présentation : Lors de l'écriture de code C++, nous rencontrons parfois diverses erreurs. L'un d'eux est "expression primaire attendue avant", "jeton" (expression primaire manquante avant la virgule). Cette erreur est généralement détectée lors du processus de compilation, elle nous signale qu'un

Comment résoudre l'erreur de syntaxe C++ : « expression primaire attendue avant le jeton « . » ? Comment résoudre l'erreur de syntaxe C++ : « expression primaire attendue avant le jeton « . » ? Aug 26, 2023 pm 07:43 PM

Comment résoudre l'erreur de syntaxe C++ : 'expectedprimary-expressionbefore'.'token' ? Lors de l’écriture de programmes en C++, nous rencontrons parfois diverses erreurs de syntaxe. L’une des erreurs courantes est « expectedprimary-expressionbefore ». « token ». Lorsque nous utilisons une syntaxe incorrecte pour accéder aux membres d'une classe dans notre code, le compilateur signalera cette erreur.

Comment résoudre l'erreur de syntaxe C++ : « initialiseur attendu avant le jeton « ( » ? Comment résoudre l'erreur de syntaxe C++ : « initialiseur attendu avant le jeton « ( » ? Aug 26, 2023 pm 09:37 PM

Comment résoudre l'erreur de syntaxe C++ : 'expectedinitializerbefore'('token' ? Dans la programmation C++, vous rencontrez souvent diverses erreurs de compilation. L'une des erreurs courantes est 'expectedinitializerbefore'('token'. Dans cet article, nous avons la cause de cette erreur sera discuté en détail et une solution sera fournie. Tout d'abord, regardons un exemple simple : #include&l.

Comment résoudre l'erreur de syntaxe C++ : « expression primaire attendue avant le jeton « * » » ? Comment résoudre l'erreur de syntaxe C++ : « expression primaire attendue avant le jeton « * » » ? Aug 25, 2023 pm 07:16 PM

Comment résoudre les erreurs de syntaxe C++ : 'expectedprimary-expressionbefore'*'token' Dans le processus d'apprentissage de la programmation C++, nous rencontrons souvent diverses erreurs de syntaxe. L'une des erreurs courantes est 'expectedprimary-expressionbefore'*'token'. Cette erreur se produit généralement lors de l'utilisation de pointeurs, principalement parce que nous utilisons une mauvaise syntaxe quelque part ou que nous oublions

Comment résoudre l'erreur de syntaxe C++ : « ID non qualifié attendu avant le jeton «  Comment résoudre l'erreur de syntaxe C++ : « ID non qualifié attendu avant le jeton «  Aug 26, 2023 pm 10:46 PM

Comment résoudre l'erreur de syntaxe C++ : 'expectedunqualified-idbefore'&lt;'token' ? Lors du développement du C++, nous rencontrons souvent diverses erreurs. L'une des erreurs courantes est "expectedunqualified-idbefore" &lt; "token". Cette erreur signifie généralement qu'un identifiant manque quelque part, mais que le compilateur a trouvé le symbole '&lt;'. Ce genre d'erreur

Comment résoudre l'erreur de syntaxe C++ : « attendu ')' avant le jeton « & » ? Comment résoudre l'erreur de syntaxe C++ : « attendu ')' avant le jeton « & » ? Aug 26, 2023 pm 08:13 PM

Comment résoudre l'erreur de syntaxe C++ : 'attendu')'avant'&'jeton' ? Dans le processus de programmation C++, diverses erreurs de syntaxe sont souvent rencontrées. L'une des erreurs courantes est : "attendu") "avant" et "jeton". Cette erreur se produit généralement dans la liste des paramètres d'une fonction ou d'une méthode, indiquant que le compilateur ne peut pas comprendre la parenthèse droite manquante avant une variable ou un type. Ci-dessous, je vais détailler comment résoudre cette erreur et fournir du code

Comment résoudre l'erreur de syntaxe C++ : « initialiseur attendu avant le jeton «  Comment résoudre l'erreur de syntaxe C++ : « initialiseur attendu avant le jeton «  Aug 25, 2023 pm 06:30 PM

Comment résoudre l'erreur de syntaxe C++ : 'expectedinitializerbefore'&lt;'token' ? En programmation C++, diverses erreurs sont souvent rencontrées. L'une des erreurs courantes est "expectedinitializerbefore'&lt;'token". Cette erreur se produit généralement lors de l'utilisation de classes de modèles ou de fonctions de modèles, et vous devez faire attention à certains détails de syntaxe spécifiques. Dans cet article, nous aborderons l'origine de cette erreur

Comment résoudre l'erreur de syntaxe C++ : « attendu : avant le jeton ; » ? Comment résoudre l'erreur de syntaxe C++ : « attendu : avant le jeton ; » ? Aug 25, 2023 pm 03:42 PM

Comment résoudre l'erreur de syntaxe C++ : 'attendu' : 'avant';'token' C++ est un langage de programmation puissant et flexible, mais nous pouvons parfois rencontrer des erreurs de syntaxe, telles que "attendu' : 'avant';'token ". Ce message d'erreur est généralement dû à une erreur de syntaxe et le compilateur ne peut pas reconnaître la structure syntaxique correcte. Dans cet article, nous aborderons quelques raisons courantes pour lesquelles les choses tournent mal et comment y remédier. Erreur de type de référence

See all articles