Wyrażenie błędu C ++ musi mieć typ klasy

Wyrażenie błędu C ++ musi mieć typ klasy

Ilekroć kropka (.) Operator służy do pobierania zmiennych obiektu na wskazówkach do obiektów, błąd „wyrażenie musi mieć typ klasy”. Jeśli kropka (.) Operator jest stosowany do wskaźnika dowolnego obiektu wymaganej klasy, DOT (.) Operator próbuje zlokalizować elementy danych i funkcje członka wskaźnika. Ale nie istniałyby, co prowadzi do tego błędu.Możliwe, że otrzymamy błąd stwierdzający, że wyrażenie „C ++ musi mieć typ klasy” podczas uzyskiwania dostępu do funkcji klasy w C++. Jeśli mamy jakikolwiek wskaźnik klasy, powinniśmy używać operatora strzałki (->). Kiedy będziemy mieć przedmiot klasy, będziemy musieli skorzystać z kropki (.) Operator, aby naprawić błąd „Wyrażenie musi mieć typ klasy”.

Wykorzystaj kropkę (.) Operator

Program C ++ pokazujący błąd „wyrażenie musi mieć typ klasy”, jest następujący:

#włączać
za pomocą przestrzeni nazw Std;
podróż klasowa
publiczny:
void showmycountry ()

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

;
int main ()

podróż* a = new Travel ();
A.showmycountry ();
powrót 0;

W tym programie wprowadziliśmy plik nagłówka, a także wykorzystaliśmy standardową przestrzeń nazw. Oświadczyliśmy klasę o nazwie „Podróż”. A następnie zdefiniował funkcję void „showmycountry ()” tej klasy i ustaw ją na publiczne. W przypadku tej funkcji stosuje się polecenie „cout” do wydrukowania wiadomości: „Chcę iść z Turcją!".

Rozpoczęliśmy kodowanie w korpusie funkcji main (). Obiekt klasy został skonstruowany i ustawiamy ten obiekt równy wskaźnikowi klasy. Zdefiniowaliśmy także funkcję członka „showmycountry ()” klasy „podróż” z pomocą DOT (.) Operator. W końcu weszliśmy do „powrotu 0”, aby zakończyć program.

Jak naprawić błąd „Wyrażenie musi mieć typ klasy”

Głównym celem jest zadeklarowanie wymaganej klasy bez użycia nowego operatora. Na przykład, zamiast deklarować obiekt klasy jako „podróż *a = new Travel ()”, deklaruj ją jako „podróż A”, aby uzyskać funkcję członka klasy za pomocą DOT (.) Operator.

#włączać
za pomocą przestrzeni nazw Std;
podróż klasowa
publiczny:
void showmycountry ()

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

;
int main ()

podróżować;
A.showmycountry ();
powrót 0;

Przede wszystkim dołączyliśmy plik nagłówka . Można również wykorzystać standardową przestrzeń nazw. Stworzyliśmy klasę „podróży”. Funkcja tej klasy „showmycountry ()” jest zdefiniowana i upubliczniona. Komenda „cout” została zastosowana, aby pokazać stwierdzenie „Chcę iść z Turcją!”W ramach funkcji. Następnie nazwaliśmy funkcję main (). Zbudowano obiekt klasy „podróży”. Użyliśmy kropki (.) Operator deklaruje funkcję członka „showmycountry ()” klasy „podróż” . Na koniec wpisaliśmy „powrót 0”, aby wyjść z programu.

Zadeklaruj wskaźnik klasy

Kolejny kod zamierza użyć kropki (.) Operator na wskaźniku obiektu zamiast bezpośrednio na obiekcie.

#włączać
za pomocą przestrzeni nazw Std;
Język klasowy
publiczny:
void func ()
Cout<<"Artificial Langugae";

;
int main ()

Język *ptr = nowy język ();
ptr.func ();
powrót 0;

Na początku kodu zintegrowaliśmy bibliotekę pod kątem funkcji wejściowych i wyjściowych. Następnie wprowadziliśmy standardową przestrzeń nazw. Publicznie skonstruowaliśmy klasę „języka”. Zdefiniowaliśmy funkcję void func () dla tej klasy. Chcemy pokazać zdanie „sztuczna inteligencja”, więc użyliśmy oświadczenia „Cout”.

Ciało funkcji main () zaczyna się. Tam ogłosiliśmy wskaźnik do klasy „języka”. Ustawiamy wskaźnik równy obiekcie tej klasy. Utrzymaliśmy kropkę (.) Operator, aby wywołać funkcję func () klasy. Jednak ogłosiliśmy wskaźnik „ptr” tej klasy. Zamiast być elementem wskaźnika do obiektu klasowego, „FUNC” jest elementem obiektu klasy „język”. Aby zakończyć program, w kodzie dołączyliśmy „zwrot 0”.

W następnym przykładzie użyjemy wskaźnika klasy. Aby to zrobić, wkładamy operatora strzałki (->), a nie kropkę (.) Operator.

#włączać
za pomocą przestrzeni nazw Std;
język klasowy

publiczny:
void func ()
Cout<<"Artificial Intelligence"powrót 0;

int main ()

Język *ptr = nowy język ();
ptr-> func ();
powrót 0;

Po wprowadzeniu biblioteki wykorzystaliśmy standardową przestrzeń nazw. Publicznie zdefiniowaliśmy klasę „języka”. Dla tej klasy stworzyliśmy funkcję void func (). Wykorzystaliśmy deklarację „Cout”, aby pokazać zdanie „Sztuczna inteligencja”. Polecenie „ENDL” służy również do przeniesienia myszy na następną linię programu. Ciało funkcji Main () zaczyna się poniżej:

Wskaźnik do klasy „języka” jest zadeklarowany. Następnie umieszczamy wskaźnik równoważny obiektowi klasy. Przywołaliśmy tę funkcję za pomocą wskaźnika klasy „PTR” i operatora strzałki (->). Polecenie „return 0” zostało wstawione do kodu w celu zakończenia programu.

Wniosek

W tym artykule rozmawialiśmy o tym, jak błąd „wyrażenie musi mieć typ klasy” i jak to naprawić w C++. Kiedy kropka (.) Operator, który jest ogólnie używany do pozyskiwania metod i atrybutów obiektu, jest stosowany na wskazówkach do klas, wówczas zwracany jest błąd „Wyrażenie musi mieć typ klasy”. Kropka(.) Operator próbuje zidentyfikować atrybuty lub funkcje wskaźnika do obiektu, ale zawodzi. To dlatego, że nie występują. Zamiast być członkiem wskaźnika do klasy, te atrybuty lub funkcje są częścią samej klasy. W rezultacie, ilekroć używamy wskaźnika klasy, musimy wstawić operator strzałki (->), aby wywołać funkcję.