I am trying to deal with operator overloading at the first time, and I wrote this code to overload ++ operator to increment class variables i
and x
by one..
It does the job but the compiler showed these warnings:
Warning 1 warning C4620: no postfix form of 'operator ++' found for type 'tclass', using prefix form c:\users\ahmed\desktop\cppq\cppq\cppq.cpp 25
Warning 2 warning C4620: no postfix form of 'operator ++' found for type 'tclass', using prefix form c:\users\ahmed\desktop\cppq\cppq\cppq.cpp 26
This is my code:
class tclass{
public:
int i,x;
tclass(int dd,int d){
i=dd;
x=d;
}
tclass operator++(){
i++;
x++;
return *this;
}
};
int main() {
tclass rr(3,3);
rr++;
rr++;
cout<<rr.x<<" "<<rr.i<<endl;
system("pause");
return 0;
}
This syntax:
tclass operator++()
is for prefix ++
(which is actually normally written as tclass &operator++()
). To distinguish the postfix increment, you add a not-used int
argument:
tclass operator++(int)
Also, note that the prefix increment better return tclass &
because the result may be used after: (++rr).x
.
Again, note that the postfix increment looks like this:
tclass operator++(int)
{
tclass temp = *this;
++*this; // calls prefix operator ++
// or alternatively ::operator++(); it ++*this weirds you out!!
return temp;
}
There are two ++ operator
s. You defined one and used the other.
tclass& operator++(); //prototype for ++r;
tclass operator++(int); //prototype for r++;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With