class CCollision {
public:
double time;
bool operator==(const CCollision& c) {
return time == c.time;
}
bool operator>(const CCollision& c) {
return time > c.time;
}
bool operator<(const CCollision& c) {
return time < c.time;
}
bool operator>=(const CCollision& c) {
return time >= c.time;
}
bool operator<=(const CCollision& c) {
return time <= c.time;
}
};
Thanks for any help.
Operator overloading and template classes .
I have templated Sorted List class that I wrote. The class works fine when I use a primitive data type(int , char, …), but if I create I list of a class that I made it gives me this error
error C2678: binary ''<='' : no operator defined which takes a left-hand operand of type ''const class CCollision'' (or there is no acceptable conversion)
it looks like there must be something wrong with the way I have the operators overloaded for the class.
Here is the class
quote:Original post by AbobIn operator dispatch, the left hand object is the one on which the operator is being called, ie lhs.operator ( rhs ). That the left hand object is const implies that you have a sorted list of const CCollisions.
error C2678: binary ''<='' : no operator defined which takes a left-hand operand of type ''const class CCollision'' (or there is no acceptable conversion)
Anyway, the fix is simple. A const object can only have const methods called on it - methods that do/can not change the object itself.
...bool operator == (const CCollision& c) const{ return time == c.time;} bool operator >(const CCollision& c) const{ return time > c.time;} bool operator < (const CCollision& c) const{ return time < c.time;} bool operator >= (const CCollision& c) const{ return time >= c.time;} bool operator <= (const CCollision& c) const{ return time <= c.time;}...
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement