La expresión de error de C ++ debe tener un tipo de clase

La expresión de error de C ++ debe tener un tipo de clase

Siempre que el punto (.) El operador se usa para recuperar las variables de un objeto en los punteros a los objetos, se plantea el error "expresión debe tener un tipo de clase". Si el punto (.) El operador se aplica a un puntero de cualquier objeto de la clase requerida, el punto (.) El operador intenta localizar los miembros de los datos y las funciones de los miembros del puntero. Pero no existirían, lo que conduce a este error.Es posible que recibamos un error indicando que la "expresión de C ++ debe tener un tipo de clase" al acceder a una función de clase en c++. Si tenemos algún puntero de la clase, deberíamos usar el operador de flecha (->). Cuando tenemos un objeto de la clase, tendremos que utilizar el punto (.) Operador para corregir el error "La expresión debe tener un tipo de clase".

Utilizar el punto (.) Operador

El programa C ++ para mostrar el error "Expresión debe tener un tipo de clase" es el siguiente:

#incluir
usando el espacio de nombres STD;
viajes de clase
público:
nulo showmycountry ()

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

;
int main ()

viajar* a = nuevo viaje ();
a.showmycountry ();
regresar 0;

En este programa, presentamos el archivo de encabezado y también utilizamos un espacio de nombres estándar. Declaramos una clase llamada "Viajes". Y luego definió la función nula "showMyCountry ()" de esta clase y la estableció en público. Para esta función, el comando "Cout" se aplica para imprimir el mensaje: "Quiero ir a Turquía!".

Comenzamos la codificación en el cuerpo de la función principal (). Se construyó el objeto de la clase y establecemos ese objeto igual al puntero de la clase. También definimos la función miembro "showMyCountry ()" de la clase "viajar" con la ayuda del punto (.) operador. Al final, ingresamos el "Regreso 0" para finalizar el programa.

Cómo corregir el error "La expresión debe tener un tipo de clase"

El enfoque principal es declarar la clase requerida sin el uso del nuevo operador. Por ejemplo, en lugar de declarar el objeto de la clase como "viajar *a = new Travel ()", declare como "Travel A" para obtener la función de miembro de la clase con la ayuda del punto (.) operador.

#incluir
usando el espacio de nombres STD;
viajes de clase
público:
nulo showmycountry ()

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

;
int main ()

viaja a;
a.showmycountry ();
regresar 0;

En primer lugar, incluimos un archivo de encabezado . El espacio de nombres estándar también se puede utilizar. Creamos la clase de "viajar". La función de esta clase nula "showMyCountry ()" se define y se hace pública. El comando "cout" se aplicó para mostrar la declaración "Quiero ir a Turquía!"Dentro de la función. Luego, llamamos a la función Main (). Se construyó el objeto de la clase de "viajar". Usamos el punto (.) Operador para declarar la función miembro "showMyCountry ()" de la clase "Viaje" . Por último, escribimos el "return 0" para salir del programa.

Declara el puntero de la clase

El código posterior tiene la intención de usar el punto (.) operador en un puntero de objeto en lugar del objeto directamente.

#incluir
usando el espacio de nombres STD;
lenguaje de clase
público:
vacío func ()
cout<<"Artificial Langugae";

;
int main ()

Lenguaje *ptr = nuevo idioma ();
PTR.func ();
regresar 0;

Al comienzo del código, integramos la biblioteca para las funcionalidades de entrada y salida. Luego, ingresamos al espacio de nombres estándar. Construimos la clase de "idioma" públicamente. Definimos la función void func () para esta clase. Queremos mostrar la frase "inteligencia artificial", por lo que utilizamos la declaración "Cout".

El cuerpo de la función principal () comienza. Allí, declaramos un puntero a la clase de "idioma". Establecemos el puntero igual al objeto de esta clase. Utilizamos el punto (.) operador para llamar a la función func () de la clase. Sin embargo, declaramos el puntero "PTR" de esta clase. En lugar de ser un elemento del puntero al objeto de clase, "FUNC" es un componente del objeto de la clase "Idioma". Para finalizar el programa, incluimos el "retorno 0" en el código.

Vamos a utilizar el puntero de clase en el siguiente ejemplo. Para hacer esto, insertaremos el operador de flecha (->) en lugar del punto (.) operador.

#incluir
usando el espacio de nombres STD;
lenguaje de clase

público:
vacío func ()
cout<<"Artificial Intelligence"regresar 0;

int main ()

Lenguaje *ptr = nuevo idioma ();
ptr-> func ();
regresar 0;

Después de presentar la biblioteca, utilizamos el espacio de nombres estándar. Definimos públicamente la clase de "idioma". Para esta clase, creamos la función de func () void. Utilizamos la declaración "Cout" para mostrar la frase "Inteligencia Artificial". El comando "Endl" también se usa para cambiar el mouse a la siguiente línea de programa. El cuerpo de la función Main () comienza a continuación:

Se declara un puntero a la clase de "idioma". Luego, pusimos el puntero equivalente al objeto de clase. Invocamos la función con la ayuda del operador "PTR" y el operador de flecha (->). El comando "return 0" se insertó en el código para terminar el programa.

Conclusión

En este artículo, hablamos sobre cómo ocurre el error "Expresión debe tener un tipo de clase" y cómo solucionarlo en C++. Cuando el punto (.) El operador, que generalmente se usa para adquirir los métodos y atributos de un objeto, se aplica en punteros a las clases, entonces se devuelve el error "expresión debe tener un tipo de clase". El punto(.) El operador intenta identificar los atributos o funciones de un puntero a un objeto pero falla. Esto se debe a que no ocurren. En lugar de ser miembro del puntero a una clase, estos atributos o funciones son parte de la clase misma. Como resultado, cada vez que usamos un puntero de clase, debemos insertar el operador de flecha (->) para invocar la función.