In C++ you can overload both prefix and postfix increment and decrement operators like that:
class Dummy
{
public:
Dummy() :value(0) {}
Dummy(int pmValue) : value(pmValue) {}
Dummy(const Dummy& dummy) : value(dummy.getValue()) {}
int getValue() const
{
return value;
}
//---------------------------------------- Prefix
Dummy& operator++()
{
++value;
return *this;
};
Dummy& operator--()
{
--value;
return *this;
};
//---------------------------------------- Postfix
Dummy operator++(int)
{
Dummy lvDummy(*this);
++value;
return lvDummy;
};
Dummy operator--(int)
{
Dummy lvDummy(*this);
--value;
return lvDummy;
};
private:
int value;
};
If you had a problem with postfix ones, you just needed to add a parameter. Keep in mind that according to C++ standard (page 327, 13.5.7), the parameter must be int. Oh, you can also overload all of them globally following the same principle:
class Dummy
{
public:
Dummy() :value(0) {}
Dummy(const Dummy& dummy) : value(dummy.value) {}
Dummy(int pmValue) : value(pmValue) {}
int value;
};
Dummy& operator ++ (Dummy& dummy) {
++dummy.value;
return dummy;
}
Dummy& operator -- (Dummy& dummy) {
--dummy.value;
return dummy;
}
Dummy operator ++ (Dummy& dummy, int) {
Dummy lvDummy(dummy);
++dummy.value;
return lvDummy;
}
Dummy operator -- (Dummy& dummy, int) {
Dummy lvDummy(dummy);
--dummy.value;
return lvDummy;
}
No comments:
Post a Comment