0

请帮帮我。

“对象.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;
}

“其他_object.h”

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

“其他对象.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;
}

该函数调用自身,导致堆栈溢出。你应该用你想用来判断两个对象是否等价的任何逻辑替换这个函数。

此外,除非每个OBJECT都具有唯一m_numberOfObject值,否则您operator<不会创建严格的排序。(因为具有相同m_numberOfObject值但在其他方面不同的两个对象中的任何一个都不会小于另一个。)这可能会导致您set的工作方式与您的预期不同。

于 2012-08-09T13:10:47.527 回答