0

お願い助けて。

"object.cpp":

bool OBJECT::operator== (const OBJECT &object) const
{
    return *this == object;
}

bool OBJECT::operator< (const OBJECT &object) const
{
    return this->m_numberOfObject < object.m_numberOfObject;
}

"other_object.h"

class other_object{
...
set<OBJECT*>* m_imitatedObjects
... }

"other_object.cpp"

m_imitatedObjects.insert(pointer on some instance of class OBJECT)-

cmp 関数が適切に定義されていないため、実行時にエラーが発生します。

どうすればいいですか、どうすればこのエラーを修正できますか?

4

1 に答える 1

8
bool OBJECT::operator== (const OBJECT &object) const
{
    return *this == object;
}

この関数は自分自身を呼び出し、スタック オーバーフローを引き起こします。この関数は、2 つのオブジェクトが等しいかどうかを判断するために使用する任意のロジックに置き換える必要があります。

また、everyOBJECTに一意のm_numberOfObject値がない限りoperator<、厳密な順序付けは作成されません。(なぜなら、値が同じでも異なる 2 つのオブジェクトのどちらもm_numberOfObject他方よりも小さいからです。) これにより、set期待とは異なる動作が発生する可能性があります。

于 2012-08-09T13:10:47.527 に答える