L'expression d'erreur C ++ doit avoir un type de classe

L'expression d'erreur C ++ doit avoir un type de classe

Chaque fois que le point (.) L'opérateur est utilisé pour récupérer les variables d'un objet sur les pointeurs vers des objets, l'erreur «l'expression doit avoir un type de classe» est augmentée. Si le point (.) L'opérateur est appliqué à un pointeur de tout objet de la classe requise, le point (.) L'opérateur tente de localiser les membres de données et les fonctions membre du pointeur. Mais ils n'existeraient pas, ce qui conduit à cette erreur.Il est possible que nous obtenions une erreur indiquant que «l'expression C ++ doit avoir un type de classe» lors de l'accès à une fonction de classe en C++. Si nous avons un pointeur de la classe, nous devrions utiliser l'opérateur de flèche (->). Lorsque nous aurons un objet de la classe, nous devrons utiliser le point (.) Opérateur pour corriger l'erreur «L'expression doit avoir un type de classe».

Utilisez le point (.) Opérateur

Le programme C ++ pour afficher l'erreur «Expression doit avoir un type de classe» est la suivante:

#inclure
Utilisation de Namespace Std;
classe voyage
public:
void showmycounry ()

couter<< "I want to go Turkey!";

;
int main()

voyage * a = nouveau voyage ();
un.Showmycounry ();
retour 0;

Dans ce programme, nous avons présenté le fichier d'en-tête et utilisé un espace de noms standard. Nous avons déclaré une classe nommée «voyage». Puis a défini la fonction vide «showmycounry ()» de cette classe et la mettre en public. Pour cette fonction, la commande «cout» est appliquée pour imprimer le message: «Je veux faire de la dinde!".

Nous avons commencé le codage dans le corps de la fonction principale (). L'objet de la classe a été construit et nous avons défini cet objet égal au pointeur de la classe. Nous avons également défini la fonction membre «showmycounry ()» de la classe «voyage» avec l'aide du point (.) opérateur. En fin de compte, nous sommes entrés dans le «retour 0» pour mettre fin au programme.

Comment corriger l'erreur «L'expression doit avoir un type de classe»

L'objectif principal est de déclarer la classe requise sans utiliser le nouvel opérateur. Par exemple, plutôt que de déclarer l'objet de la classe comme «Travel * a = new Travel ()», déclare-le «Travel A» pour obtenir la fonction du membre de la classe à l'aide du point (.) opérateur.

#inclure
Utilisation de Namespace Std;
classe voyage
public:
void showmycounry ()

couter<< "I want to go Turkey!";

;
int main()

voyager a;
un.Showmycounry ();
retour 0;

Tout d'abord, nous avons inclus le fichier d'en-tête . L'espace de noms standard peut également être utilisé. Nous avons créé la classe «voyage». La fonction de cette classe vide «showmycounry ()» est définie et rendue publique. La commande «cout» a été appliquée pour afficher la déclaration «Je veux faire de la dinde!"Dans la fonction. Ensuite, nous avons appelé la fonction principale (). L'objet de la classe «voyage» a été construit. Nous avons utilisé le point (.) opérateur pour déclarer la fonction membre «showmycounry ()» de la classe «voyage» . Enfin, nous avons tapé le «retour 0» pour quitter le programme.

Déclarer le pointeur de la classe

Le code suivant a l'intention d'utiliser le point (.) Opérateur sur un pointeur d'objet au lieu de l'objet directement.

#inclure
Utilisation de Namespace Std;
classe de classe
public:
void func ()
couter<<"Artificial Langugae";

;
int main()

Langue * ptr = new Language ();
ptr.func ();
retour 0;

Au début du code, nous avons intégré la bibliothèque pour les fonctionnalités d'entrée et de sortie. Ensuite, nous avons entré l'espace de noms standard. Nous avons construit publiquement la classe «langue». Nous avons défini la fonction void func () pour cette classe. Nous voulons montrer l'expression «intelligence artificielle», nous avons donc utilisé la déclaration «cout».

Le corps de la fonction principale () commence. Là, nous avons déclaré un pointeur vers la classe «langue». Nous définissons le pointeur égal à l'objet de cette classe. Nous avons utilisé le point (.) opérateur pour appeler la fonction func () de la classe. Cependant, nous avons déclaré le pointeur «PTR» de cette classe. Plutôt que d'être un élément du pointeur vers l'objet de classe, «Func» est un composant de l'objet de la classe «langue». Pour résilier le programme, nous avons inclus le «retour 0» dans le code.

Nous allons utiliser le pointeur de classe dans l'exemple suivant. Pour ce faire, nous insérons l'opérateur de flèche (>) plutôt que le point (.) opérateur.

#inclure
Utilisation de Namespace Std;
langue de classe

public:
void func ()
couter<<"Artificial Intelligence"retour 0;

int main()

Langue * ptr = new Language ();
ptr-> func ();
retour 0;

Après avoir introduit la bibliothèque, nous avons utilisé l'espace de noms standard. Nous avons publiquement défini la classe «langue». Pour cette classe, nous avons créé la fonction void func (). Nous avons utilisé la déclaration «cout» pour montrer l'expression «intelligence artificielle». La commande «endl» est également utilisée pour déplacer la souris vers la ligne de programme suivante. Le corps de la fonction principale () commence ci-dessous:

Un pointeur vers la classe «langue» est déclaré. Ensuite, nous mettons l'équivalent du pointeur à l'objet de classe. Nous avons invoqué la fonction à l'aide du pointeur de classe «PTR» et de l'opérateur de flèche (->). La commande «return 0» a été insérée dans le code pour résilier le programme.

Conclusion

Dans cet article, nous avons parlé de la façon dont l'erreur «l'expression doit avoir un type de classe» se produit et comment le réparer en C++. Quand le point (.) L'opérateur, qui est généralement utilisé pour acquérir les méthodes et les attributs d'un objet, est appliqué sur les pointeurs aux classes, puis l'erreur «l'expression doit avoir un type de classe» est renvoyée. Le point(.) L'opérateur essaie d'identifier les attributs ou les fonctions d'un pointeur vers un objet mais échoue. C'est parce qu'ils ne se produisent pas. Au lieu d'être membre du pointeur vers une classe, ces attributs ou fonctions font partie de la classe elle-même. En conséquence, chaque fois que nous utilisons un pointeur de classe, nous devons insérer l'opérateur de flèche (->) pour invoquer la fonction.