みんな私持っている構造体のは、X、それを呼ぼうと、それはそうのように見えるので、私はまた、この構造体へのポインタを返すFNC(ではない、それのメンバーを)持っているいくつかの愚かな:演算子オーバーロード==
struct X
{
bool operator==(const X* right)
{
//...
}
};
X* get(X* another)
{
//...
}
I
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
はポインタを返さなければなりません)。
できません。演算子オーバーロードは、オペランドの1つとしてユーザー定義の型を持たなければなりません。ポインタを返すために 'get(a)== get(b)'と 'get()'が必要な場合は、両方のオペランドがポインタであり、ユーザ定義型ではありません。あなたが '* get(a)== get(b)'を行うことができれば '演算子==(const X * right)'は動作しますが、できません。 –
そのコード行を変更できないのはなぜですか? –
なぜこれらの愚かな要求があるのか説明できますか? –