Maison > développement back-end > C++ > Erreur C++ : l'appel d'opérations de flèche à des membres de classe non pointeurs n'est pas autorisé. Comment le résoudre ?

Erreur C++ : l'appel d'opérations de flèche à des membres de classe non pointeurs n'est pas autorisé. Comment le résoudre ?

WBOY
Libérer: 2023-08-21 21:41:05
original
1218 Les gens l'ont consulté

C++ est un langage de programmation orienté objet. Sa puissance réside dans le fait que le paradigme de programmation orientée objet peut aider les développeurs à encapsuler, hériter, le polymorphisme et d'autres fonctions, et à améliorer la lisibilité et la maintenabilité du code. Cependant, dans le développement quotidien, nous rencontrerons inévitablement diverses erreurs et exceptions, et résoudre ces problèmes est le travail quotidien des programmeurs. Parmi eux, comment résoudre le problème de « l'appel d'opérations de flèche à des membres de classe non pointeurs n'est pas autorisé » ?

Tout d'abord, comprenons la signification de cette erreur : En C++, l'opérateur flèche (->) est utilisé pour accéder aux fonctions membres ou aux variables membres dans une structure ou un pointeur de classe. Dans certains cas, cette erreur se produit si l’opérateur flèche est utilisé pour accéder à un membre d’un type non pointeur. Par exemple, le code suivant peut provoquer cette erreur :

class person{
public:
    void print(){
        cout<<"name:"<<name<<endl;
        cout<<"age:"<<age<<endl;
    }
private:
    string name;
    int age;
};
int main(){
    person p;
    p->print();
    return 0;
}
Copier après la connexion

Dans le code ci-dessus, nous définissons une classe nommée person, qui a une fonction d'impression pour imprimer les membres de l'objet, et instancie person dans la fonction principale Object p, et utilisez l’opérateur flèche pour accéder à la fonction d’impression. Cependant, lorsque nous essayons de compiler et d'exécuter, nous obtenons le message d'erreur « Les appels aux opérations de flèche sur les membres de classe non pointeurs ne sont pas autorisés ».

Ensuite, nous devons trouver une solution à ce problème. La cause la plus courante de cette erreur est la tentative d’utilisation de l’opérateur flèche sur un type autre que pointeur. La solution est simple, il suffit de remplacer l'opérateur flèche (->) par l'opérateur point (.) :

int main(){
    person p;
    p.print();
    return 0;
}
Copier après la connexion

A ce moment, lorsque nous compilerons et réexécuterons le code, nous constaterons que l'erreur a disparu et le programme Il peut également être exécuté normalement.

En plus de la méthode ci-dessus, il existe une meilleure façon d'utiliser les pointeurs. En C++, un pointeur est un type de données très courant qui peut pointer vers un objet d'une classe pour accéder aux membres de la classe. L'utilisation de pointeurs peut non seulement éviter les problèmes ci-dessus, mais également permettre une manipulation plus flexible des objets. Par exemple, on peut modifier le code ci-dessus comme ceci :

int main(){
    person *p = new person;
    p->print();
    delete p;
    return 0;
}
Copier après la connexion

Dans cette version du code, on utilise le pointeur p pointant vers la classe personne pour accéder à la fonction d'impression. De cette manière, nous pouvons créer et détruire des objets de manière flexible et éviter les erreurs causées par des problèmes de durée de vie des objets.

En bref, pour l'erreur "l'appel d'opérations fléchées à des membres de classe non pointeurs n'est pas autorisé", nous pouvons la résoudre en remplaçant des opérateurs ou en utilisant des pointeurs. Ce problème peut sembler mineur, mais il nous rappelle d'être plus prudents lors de l'écriture du code et de suivre les spécifications du langage lors de l'utilisation des fonctionnalités C++ pour éviter des problèmes et des erreurs inutiles.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal