A expressão de erro C ++ deve ter um tipo de classe

A expressão de erro C ++ deve ter um tipo de classe

Sempre que o ponto (.) O operador é usado para recuperar as variáveis ​​de um objeto em ponteiros para objetos, o erro “a expressão deve ter um tipo de classe” é elevado. Se o ponto (.) O operador é aplicado a um ponteiro de qualquer objeto da classe necessária, o ponto (.) O operador tenta localizar os membros de dados e as funções de membro do ponteiro. Mas eles não existiriam, o que leva a este erro.É possível que tenhamos um erro afirmando que a “expressão de C ++ deve ter um tipo de classe” ao acessar uma função de classe em C++. Se tivermos algum ponteiro da classe, devemos usar o operador de seta (->). Quando temos um objeto da classe, teremos que utilizar o ponto (.) Operador para corrigir o erro "A expressão deve ter um tipo de classe".

Utilizar o ponto (.) Operador

O programa C ++ para mostrar que o erro "Expressão deve ter um tipo de classe" é o seguinte:

#incluir
usando namespace std;
classe Travel
público:
Void ShowMycountry ()

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

;
int main ()

viagem* a = new Travel ();
a.showmycountry ();
retornar 0;

Neste programa, introduzimos o arquivo de cabeçalho e também utilizamos um espaço de nome padrão. Declaramos uma aula chamada "Travel". E depois definiu a função vazia "ShowMyCountry ()" desta classe e defina -a como público. Para esta função, o comando "cout" é aplicado para imprimir a mensagem "Eu quero ir para a Turquia!”.

Iniciamos a codificação no corpo da função principal (). O objeto da classe foi construído e definimos esse objeto igual ao ponteiro da classe. Também definimos a função de membro "ShowMyCountry ()" da classe "viajar" com a ajuda do ponto (.) Operador. No final, entramos no "retorno 0" para encerrar o programa.

Como corrigir o erro "A expressão deve ter um tipo de classe"

O foco principal é declarar a classe necessária sem o uso do novo operador. Por exemplo, em vez de declarar o objeto da classe como "Travel *a = new Travel ()", declare -o como "viajar A" para obter a função de membro da classe com a ajuda do DOT (.) Operador.

#incluir
usando namespace std;
classe Travel
público:
Void ShowMycountry ()

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

;
int main ()

viajar para;
a.showmycountry ();
retornar 0;

Primeiro de tudo, incluímos o arquivo de cabeçalho . O espaço para nome padrão também pode ser utilizado. Criamos a aula de "viagens". A função desta classe vazia "ShowMyCountry ()" é definida e tornada pública. O comando "cout" foi aplicado para mostrar a declaração "Eu quero ir para a Turquia!”Dentro da função. Então, chamamos a função principal (). O objeto da classe "Travel" foi construído. Usamos o ponto (.) Operador para declarar a função de membro "ShowMycountry ()" da classe "Travel" . Por fim, digitamos o "retorno 0" para sair do programa.

Declarar o ponteiro da classe

O código subsequente pretende usar o ponto (.) Operador em um ponteiro de objeto em vez do objeto diretamente.

#incluir
usando namespace std;
classe de classe
público:
void func ()
cout<<"Artificial Langugae";

;
int main ()

Idioma *ptr = new idioma ();
ptr.func ();
retornar 0;

No início do código, integramos a biblioteca para funcionalidades de entrada e saída. Em seguida, entramos no espaço de nome padrão. Construímos a classe "idioma" publicamente. Definimos a função void func () para esta classe. Queremos mostrar a frase "inteligência artificial", então usamos a declaração "cout".

O corpo da função principal () começa. Lá, declaramos um ponteiro para a classe "idioma". Definimos o ponteiro igual ao objeto desta classe. Utilizamos o ponto (.) Operador para chamar a função func () da classe. No entanto, declaramos o ponteiro "PTR" desta classe. Em vez de ser um elemento do ponteiro para o objeto de classe, "Func" é um componente da classe "Language". Para encerrar o programa, incluímos o "retorno 0" no código.

Vamos utilizar o ponteiro da classe no exemplo a seguir. Para fazer isso, inseriremos o operador de seta (->) em vez do ponto (.) Operador.

#incluir
usando namespace std;
linguagem de classe

público:
void func ()
cout<<"Artificial Intelligence"retornar 0;

int main ()

Idioma *ptr = new idioma ();
ptr-> func ();
retornar 0;

Depois de apresentar a biblioteca, utilizamos o espaço de nome padrão. Definimos publicamente a classe "idioma". Para esta classe, criamos a função void func (). Usamos a declaração "cout" para mostrar a frase "inteligência artificial". O comando "endl" também é usado para mudar o mouse para a próxima linha do programa. O corpo da função Main () começa abaixo:

Um ponteiro para a classe "idioma" é declarado. Então, colocamos o ponteiro equivalente ao objeto de classe. Invocamos a função com a ajuda do ponteiro de classe “PTR” e o operador de seta (->). O comando "Return 0" foi inserido no código para encerrar o programa.

Conclusão

Neste artigo, falamos sobre como ocorre o erro "a expressão deve ter um tipo de classe" e como corrigi -lo em c++. Quando o ponto (.) O operador, que geralmente é usado para adquirir os métodos e atributos de um objeto, é aplicado em ponteiros para as classes, então o erro “a expressão deve ter um tipo de classe” é retornado. O ponto(.) O operador tenta identificar os atributos ou funções de um ponteiro para um objeto, mas falha. Isso é porque eles não ocorrem. Em vez de ser um membro do ponteiro de uma classe, esses atributos ou funções fazem parte da própria classe. Como resultado, sempre que usamos um ponteiro de classe, devemos inserir o operador de seta (->) para invocar a função.