I am trying to overload the c++ operator== but im getting some errors...
error C2662: 'CombatEvent::getType' : cannot convert 'this' pointer from 'const CombatEvent' to 'CombatEvent &'
this error is at this line
if (lhs.getType() == rhs.getType())
see the code bellow:
class CombatEvent { public: CombatEvent(void); ~CombatEvent(void); enum CombatEventType { AttackingType, ... LowResourcesType }; CombatEventType getType(); BaseAgent* getAgent(); friend bool operator<(const CombatEvent& lhs, const CombatEvent& rhs) { if (lhs.getType() == rhs.getType()) return true; return false; } friend bool operator==(const CombatEvent& lhs, const CombatEvent& rhs) { if (lhs.getType() == rhs.getType()) return true; return false; } private: UnitType unitType; }
can anybody help?
CombatEventType getType();
needs to be
CombatEventType getType() const;
Your compiler is complaining because the function is being given a const
object that you're trying to call a non-const
function on. When a function gets a const
object, all calls to it have to be const
throughout the function (otherwise the compiler can't be sure that it hasn't been modified).
change the declaration to :
CombatEventType getType() const;
you can only call 'const' members trough references to const.
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