いくつかのコードのメンテナンスを行っていますが、は簡略化する必要があります。の方が、読みやすく、コードの数が少なくて済みます。 次のサンプルクラスを考える:オペレータでのオブジェクトポインタの比較===
class MyClass
{
public:
MyClass();
MyClass(Object1* o1, Object2* o2, Object3* o3, Object4* o4);
~MyClass();
MyClass &operator=(const MyClass &other);
void copy(const MyClass &other);
bool operator==(const MyClass &other) const;
...
private:
Object1* o1 = 0;
Object2* o2 = 0;
Object3* o3 = 0;
Object4* o4 = 0;
};
このクラスは、1〜4の任意のオブジェクトで構成されています。
これらのオブジェクトがnullになる可能性がありますので、私は等しい演算子に来たときに、私が見つけた次等しい演算子が必要な場合、私は議論を持参する必要はありません
bool MyClass::operator==(const MyClass &other) const
{
if (o1 && (other.o1 == NULL)) return false;
if ((o1 == NULL) && other.o1) return false;
if (o1 && other.o1){ if (*o1!= *other.o1) return false; }
if (o2 && (other.o2 == NULL)) return false;
if ((o2 == NULL) && other.o2) return false;
if (o2 && other.o2){ if (*o2!= *other.o2) return false; }
if (o3 && (other.o3 == NULL)) return false;
if ((o3 == NULL) && other.o3) return false;
if (o3 && other.o3){ if (*o3!= *other.o3) return false; }
if (o4 && (other.o4 == NULL)) return false;
if ((o4 == NULL) && other.o4) return false;
if (o4 && other.o4){ if (*o4!= *other.o4) return false; }
return true;
}
かそうではない、私はちょうど上記のコードを簡素化する方法があるかどうかを知りたい。
一般的なこと:等価演算子でオブジェクトポインタを比較する最も標準的で効率的な方法は何ですか?
誰かがなぜdownvotesを説明するために親切かもしれませんか? – ABCplus
誰かがこれを意見/討論の質問と解釈している可能性があります。それはかなり近いです。 –
Mmm ...質問はいくつかの特定のコードに関連しています – ABCplus