Home > Article > Backend Development > C++ error: Calling arrow operations to non-pointer class members is not allowed. How to solve it?
C is an object-oriented programming language. Its power lies in the fact that the object-oriented programming paradigm can help developers encapsulate, inherit, polymorphism and other functions, and improve the readability and maintainability of code. However, in daily development, we will inevitably encounter various errors and exceptions, and dealing with these problems is the daily work of programmers. Among them, how to solve the problem of "calling arrow operations to non-pointer class members is not allowed"?
First of all, let us understand the meaning of this error: In C, the arrow operator (->) is used to access member functions or member variables in structures or class pointers. In some cases, this error occurs if the arrow operator is used to access a member of a non-pointer type. For example, the following code may cause this error:
class person{ public: void print(){ cout<<"name:"<<name<<endl; cout<<"age:"<<age<<endl; } private: string name; int age; }; int main(){ person p; p->print(); return 0; }
In the above code, we define a class named person, which has a print function for printing the members of the object, and at the same time in the main function Instantiate the person object p in and use the arrow operator to access the print function. However, when we try to compile and run, we get the error message "Calls to arrow operations on non-pointer class members are not allowed".
Next, we need to find a solution to this problem. The most common cause of this error is trying to use the arrow operator on a non-pointer type. The solution is simple, we just need to replace the arrow operator (->) with the dot operator (.):
int main(){ person p; p.print(); return 0; }
At this time, when we compile and run the code again, we will find the error It has disappeared and the program can execute normally.
In addition to the above methods, there is a better way to use pointers. In C, a pointer is a very common data type that can point to an object of a class to access members of the class. Using pointers can not only avoid the above problems, but also allow more flexible manipulation of objects. For example, we can modify the above code like this:
int main(){ person *p = new person; p->print(); delete p; return 0; }
In this version of the code, we use the pointer p pointing to the person class to access the print function. In this way, we can flexibly create and destroy objects and avoid errors caused by object lifetime issues.
In short, for the error "calling arrow operations to non-pointer class members is not allowed", we can solve it by replacing operators or using pointers. This problem may seem minor, but it reminds us to be more careful when writing code and follow language specifications when using C features to avoid unnecessary problems and errors.
The above is the detailed content of C++ error: Calling arrow operations to non-pointer class members is not allowed. How to solve it?. For more information, please follow other related articles on the PHP Chinese website!