无法在对象上添加指针到集合

spi*_*ght 0 c++ templates stl set

请帮帮我.

"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;
}
Run Code Online (Sandbox Code Playgroud)

"other_object.h"

class other_object{
...
set<OBJECT*>* m_imitatedObjects
... }
Run Code Online (Sandbox Code Playgroud)

"other_object.cpp"

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

在运行时引发错误,因为我认为由于cmp函数没有正确定义.

怎么做,我该如何解决这个错误?

Dav*_*rtz 8

bool OBJECT::operator== (const OBJECT &object) const
{
    return *this == object;
}
Run Code Online (Sandbox Code Playgroud)

此函数调用自身,导致堆栈溢出.您应该使用您想要使用的任何逻辑来替换此函数,以判断这两个对象是否相同.

此外,除非每个OBJECT都具有唯一m_numberOfObject值,否则您operator<不会创建严格的订购.(因为具有相同m_numberOfObject值但两个不同的两个对象都不会比另一个小.)这可能会导致您set的工作方式与您的预期不同.