📜  表达式在C++中必须具有类类型错误

📅  最后修改于: 2021-05-30 02:32:56             🧑  作者: Mango

表达式必须具有类类型,这是在将dot(。)运算符用于访问对象的属性时,在指向对象的指针上使用时引发的错误。

Dot(’。’)运算符基本上用于访问对象的字段和方法,但是在这种情况下,如果在指向对象的指针上使用点运算符,则会显示错误“表达式必须具有类”

在这种情况下,当在类类型对象的指针上使用Dot(’。’)运算符时, Dot(’。’)运算符会尝试查找指针类型的字段和方法,但实际上它们并不存在,因此,我们得到这个错误。

下面是下面的代码来说明上述错误:

C++
// C++ program to illustrate the
// Expression must have class
// type error
#include 
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;
}


C++
// C++ program to illustrate how to
// solve Expression must have class
// type error
#include 
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;
}


输出:

如何解决这个错误?
为了解决上述错误,我们的想法是在不使用new运算符的情况下初始化该类,即,不要将对象初始化为“ className * obj = new className()” ,而应将其初始化为“ className obj”以访问该函数的成员函数。使用dot(’。’)运算符。下面是说明相同内容的程序:

C++

// C++ program to illustrate how to
// solve Expression must have class
// type error
#include 
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;
}
输出:
Welcome to GeeksforGeeks!
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”