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

La expresión debe tener un tipo de clase es un error que se genera cuando el operador punto (.) se usa para acceder a las propiedades de un objeto, se usa en punteros a objetos.

El operador de punto (‘.’) se usa básicamente para acceder a los campos y métodos de un objeto, pero cuando se usa un operador de punto en el puntero al objeto en esa condición, se muestra el tipo de error «La expresión debe tener clase» .

Cuando el operador Dot(‘.’) se usa en un puntero de tipo de clase objeto en esa condición , el operador Dot(‘.’) intenta encontrar campos y métodos de tipo puntero pero en realidad no existen y por eso, obtenemos este error.

A continuación se muestra el siguiente código para ilustrar el error anterior: 

C++

// C++ program to illustrate the
// Expression must have class
// type error
#include <iostream>
using namespace std;
 
// Class
class GeeksforGeeks {
public:
    // Function to display message
    void showMyName()
    {
        cout << "Welcome to GeeksforGeeks!";
    }
};
 
// Driver Code
int main()
{
    // Object of the class
    GeeksforGeeks* p = new GeeksforGeeks();
 
    // Member function call
    p.showMyName();
 
    return 0;
}

Salida: ¿Cómo resolver este error? Para resolver el error anterior, la idea es inicializar la clase sin usar el operador new, es decir, en lugar de inicializar el objeto como «className *obj = new className()» , inicialícelo como «className obj» para acceder a la función miembro de la clase usando el operador dot(‘.’) . A continuación se muestra el programa para ilustrar lo mismo: 

C++

// C++ program to illustrate how to
// solve Expression must have class
// type error
#include <iostream>
using namespace std;
 
// Class
class GeeksforGeeks {
public:
    // Function to display message
    void showMyName()
    {
        cout << "Welcome to GeeksforGeeks!";
    }
};
 
// Driver Code
int main()
{
    // Object of the class
    GeeksforGeeks p;
 
    // Member function call
    p.showMyName();
 
    return 0;
}
Producción:

Welcome to GeeksforGeeks!

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por ramswarup_kulhary y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *