Guys I have some silly struct let’s call it X and I also have a fnc (not a member of it) returning a pointer to this struct so it looks like so:
struct X
{
bool operator==(const X* right)
{
//...
}
};
X* get(X* another)
{
//...
}
I also have line in code which ‘tries’ to compare pointers to those structs but the real intention is to compare those structs pointed to:
if (get(a) == get(b))//here obviously I have two pointers returned to be compared
{
//...
}
I also defined member of X operator==(const X* right) which suppose to work in situations aforementioned but for reason I do not understand it doesn’t. How to make it work (I CANNOT change the line if (get(a) == get(b)) and also get MUST return pointer).
You cannot change the way pointers are compared. You must either change the syntax of the
ifstatement, or changeget()to return a reference instead of pointer. Any other solution is going to be quite hacky.If you truly must live with those restrictions, I would suggest changing
get()to return some kind of specialized smart pointer to encapsulate this inconsistent behavior you want, with overloadedoperator ->()and overloadedoperator ==(). I swear though, this is really just asking for trouble, and I think you’re still better to fight whatever power doesn’t allow you to change theif()statement.