私は自分の大学で最初にオブジェクト指向のプロジェクトを書いています。私は==演算子のオーバーロードに問題がありました。私の基本クラスの生物で 私は演算子==過負荷は比較されません
friend bool operator==(const Organism &curr, const Organism &other);
bool operator==(const Organizm &curr, const Organizm &other) {
if (curr.x == other.x) {
if (curr.y == other.y)
return true;
}
return false;
}
を持っている動物は、生物、フォックスから継承し、オオカミが動物を継承しています。 iは
Fox f(1, 2);
Wolf w(1, 2);
Organizm *o1, *o2;
o1 = &f;
o2 = &w;
bool ok = (o1 == o2);
比較です
は、適切な変数が同じであっても、falseを返す比較しようとします。 私はすべての生物をstd :: vectorに保つので、std :: findには演算子==が必要です。
あなたの問題とは無関係ですが、ネストされた 'if'は論理ANDと等価であり、比較はブール結果を返します。関数本体で行う必要があるのは、 'return curr.x == other.x && curr.y == other.y;' –
です。また、細心の注意を払ってください。生物と組織は2つの異なる言葉です。 –
その生物と組織について教授に名前を付けてポスティングする前にそれを翻訳するときには、すべてを変更するのを忘れてしまいました –