L'espressione di errore C ++ deve avere un tipo di classe

L'espressione di errore C ++ deve avere un tipo di classe

Ogni volta che il punto (.) L'operatore viene utilizzato per recuperare le variabili di un oggetto sui puntatori agli oggetti, l'errore "L'espressione deve avere un tipo di classe" viene sollevato. Se il punto (.) L'operatore viene applicato a un puntatore di qualsiasi oggetto della classe richiesta, il punto (.) L'operatore tenta di individuare i membri dei dati e le funzioni del membro del puntatore. Ma non esistevano, il che porta a questo errore.È possibile che riceveremo un errore affermando che "l'espressione di C ++ deve avere un tipo di classe" quando si accede a una funzione di classe in C++. Se abbiamo un puntatore della classe, dovremmo usare l'operatore freccia (->). Quando abbiamo un oggetto della classe, dovremo utilizzare il punto (.) operatore per correggere l'errore "L'espressione deve avere un tipo di classe".

Utilizzare il punto (.) Operatore

Il programma C ++ per mostrare che "l'espressione deve avere un tipo di tipo di classe" è il seguente:

#includere
Utilizzo dello spazio dei nomi std;
Class Travel
pubblico:
void showmycountry ()

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

;
int main ()

viaggio* a = new Travel ();
UN.showMyCountry ();
restituzione 0;

In questo programma, abbiamo introdotto il file di intestazione e utilizzato anche uno spazio dei nomi standard. Abbiamo dichiarato una classe chiamata "Travel". E quindi definito la funzione void "showmycountry ()" di questa classe e metterlo su pubblico. Per questa funzione, il comando "cout" viene applicato per stampare il messaggio, "Voglio andare alla Turchia!".

Abbiamo iniziato la codifica nel corpo della funzione principale (). L'oggetto della classe è stato costruito e abbiamo impostato quell'oggetto uguale al puntatore della classe. Abbiamo anche definito la funzione membro "ShowMyCountry ()" della classe "Travel" con l'aiuto del punto (.) operatore. Alla fine, abbiamo inserito "return 0" per porre fine al programma.

Come correggere l'errore "L'espressione deve avere un tipo di classe"

L'obiettivo principale è dichiarare la classe richiesta senza l'uso del nuovo operatore. Ad esempio, anziché dichiarare l'oggetto della classe come "viaggio *a = nuovo viaggio ()", lo dichiara come "viaggio a" per ottenere la funzione del membro della classe con l'aiuto del punto (.) operatore.

#includere
Utilizzo dello spazio dei nomi std;
Class Travel
pubblico:
void showmycountry ()

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

;
int main ()

Viaggia a;
UN.showMyCountry ();
restituzione 0;

Prima di tutto, abbiamo incluso il file di intestazione . Lo spazio dei nomi standard può anche essere utilizzato. Abbiamo creato la classe "Travel". La funzione di questa classe void "showmycountry ()" è definita e resa pubblica. Il comando "Cout" è stato applicato per mostrare l'affermazione "Voglio andare in Turchia!"All'interno della funzione. Quindi, abbiamo chiamato la funzione principale (). È stato costruito l'oggetto della classe "Travel". Abbiamo usato il punto (.) operatore per dichiarare la funzione membro "showmycountry ()" della classe "Travel" . Infine, abbiamo digitato il "return 0" per uscire dal programma.

Dichiarare il puntatore della classe

Il codice successivo intende utilizzare il punto (.) operatore su un puntatore oggetto anziché l'oggetto direttamente.

#includere
Utilizzo dello spazio dei nomi std;
lingua di classe
pubblico:
void func ()
cout<<"Artificial Langugae";

;
int main ()

Lingua *ptr = new lingua ();
PTR.func ();
restituzione 0;

All'inizio del codice, abbiamo integrato la libreria per le funzionalità di input e output. Quindi, abbiamo inserito lo spazio dei nomi standard. Abbiamo costruito pubblicamente la classe "lingua". Abbiamo definito la funzione void func () per questa classe. Vogliamo mostrare la frase "intelligenza artificiale", quindi abbiamo usato la dichiarazione "cout".

Il corpo della funzione principale () inizia. Lì, abbiamo dichiarato un puntatore alla classe "lingua". Impostiamo il puntatore uguale all'oggetto di questa classe. Abbiamo utilizzato il punto (.) operatore per chiamare la funzione func () della classe. Tuttavia, abbiamo dichiarato il puntatore "PTR" di questa classe. Piuttosto che essere un elemento del puntatore all'oggetto di classe, "func" è un componente dell'oggetto della classe "lingua". Per terminare il programma, abbiamo incluso "return 0" nel codice.

Utilizzeremo il puntatore di classe nel seguente esempio. Per fare questo, inseriremo l'operatore freccia (->) piuttosto che il punto (.) operatore.

#includere
Utilizzo dello spazio dei nomi std;
linguaggio di classe

pubblico:
void func ()
cout<<"Artificial Intelligence"restituzione 0;

int main ()

Lingua *ptr = new lingua ();
ptr-> func ();
restituzione 0;

Dopo aver introdotto la biblioteca, abbiamo utilizzato lo spazio dei nomi standard. Abbiamo definito pubblicamente la classe "lingua". Per questa classe, abbiamo creato la funzione void func (). Abbiamo usato la dichiarazione "cout" per mostrare la frase "intelligenza artificiale". Il comando "endl" viene anche utilizzato per spostare il mouse nella riga del programma successivo. Il corpo della funzione principale () inizia di seguito:

Viene dichiarato un puntatore alla classe "lingua". Quindi, mettiamo il puntatore equivalente all'oggetto di classe. Abbiamo invocato la funzione con l'aiuto del puntatore di classe "PTR" e dell'operatore freccia (->). Il comando "return 0" è stato inserito nel codice per terminare il programma.

Conclusione

In questo articolo, abbiamo parlato di come si verifica l'errore che "l'espressione deve avere un tipo di classe" e come risolverlo in C++. Quando il punto (.) operatore, che viene generalmente utilizzato per acquisire i metodi e gli attributi di un oggetto, viene applicato su puntatori alle classi, quindi l'errore "l'espressione deve avere un tipo di classe" viene restituito. Il punto(.) L'operatore cerca di identificare gli attributi o le funzioni di un puntatore a un oggetto ma fallisce. Questo perché non si verificano. Invece di essere un membro del puntatore a una classe, questi attributi o funzioni fanno parte della classe stessa. Di conseguenza, ogni volta che usiamo un puntatore di classe, dobbiamo inserire l'operatore freccia (->) per invocare la funzione.