Home > Article > Backend Development > C++ compilation error: Overloaded operators must have the same number of parameters. How to modify it?
In the process of C programming, various errors often occur, among which compilation errors are very common. Among them, overloading operators must have the same number of parameters is a very common error. Today we will learn about the cause of this error and how to modify it.
First, we need to understand what operator overloading is. Operators are a very important concept in C. They are symbols or specific functions used to perform specific operations. There are some built-in operators in C, such as , -, *, /, etc., and these built-in operators can be used to operate on basic data types. However, for custom types, we can also overload these operators so that they can operate on our own types.
For example, we define a class named Complex (plural number), which contains 2 member variables, namely the real part and the imaginary part. We can implement addition, subtraction, multiplication, and division operations between two complex numbers by overloading operators " ", "-", "*", "/", etc. In this way, we can use C's built-in operators to operate on our custom types, which is very flexible and convenient.
However, when doing operator overloading, it should be noted that we must follow some rules. One of them is that overloaded operators must have the same number of parameters. That is, if we define a binary operator (requiring two operands), then we must define two parameters in the operator overloaded function, otherwise a compilation error will occur.
For example, when we overload the " " operator in the Complex class, we define the following function in the class:
Complex operator + (const Complex& c) { Complex result(real+c.real, imag+c.imag); return result; }
In the above code, we define a binary operator " ” requires two operands, so two parameters are also defined. The first parameter is the current object (this pointer here), and the second parameter is the Complex object c.
However, if we define the following function: (only one parameter is defined)
Complex operator + (const Complex& c) { Complex result(real+c.real, imag+c.imag); return result; }
Then a compilation error will occur: "Overloaded operators must have the same number of parameters."
At this point, all we need to do is correct this error. We need to add or delete parameters in the operator overloaded function so that the number of parameters is the same as the number of parameters required by the operator.
In the above example, we only need to add one parameter so that the number of parameters is the same as the number of parameters required by the operator. The modified code is as follows:
Complex operator + (const Complex& c1, const Complex& c2) { Complex result(c1.real+c2.real, c1.imag+c2.imag); return result; }
In the above code, we have added a parameter c2 so that the number of parameters is the same as the number of parameters required by the operator. This way you can compile and run successfully.
To summarize, C compilation error: overloaded operators must have the same number of parameters, because when overloading operators, we must ensure that the number of parameters defined is the same as the number of parameters required by the symbol. To resolve this error, we need to add or remove parameters in the operator overloaded function so that the number of parameters is the same as the number of parameters required by the operator.
The above is the detailed content of C++ compilation error: Overloaded operators must have the same number of parameters. How to modify it?. For more information, please follow other related articles on the PHP Chinese website!