傢伙,我有一些愚蠢的結構我們稱之爲X和我也有返回一個指向這個結構一FNC(不是其成員),所以它看起來像這樣:重載==操作符
struct X
{
bool operator==(const X* right)
{
//...
}
};
X* get(X* another)
{
//...
}
我也有行代碼,「嘗試」的指針比較那些結構,但真正的意圖是比較指着那些結構:
if (get(a) == get(b))//here obviously I have two pointers returned to be compared
{
//...
}
我也定義X operator==(const X* right)
部件,其假設在的情況下工作上述但原因我不明白它沒有。如何使它工作(我不能改變線if (get(a) == get(b))
和get
務必返回指針)。
無法完成。運算符重載必須具有用戶定義類型作爲操作數之一。如果您需要執行'get(a)== get(b)',並且'get()'需要返回一個指針,那麼這兩個操作數都是指針,即不是用戶定義的類型。 'operator ==(const X * right)'如果你可以做'* get(a)== get(b)',那麼它就會工作,但是你不能。 –
爲什麼你不能改變那行代碼? –
你能解釋爲什麼你有這些愚蠢的要求? –