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

Can`t add pointer on object to the set

本文关键字:指针 添加 集合 对象      更新时间:2023-10-16

请帮帮我。

"对象.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 函数定义不正确。

怎么办,如何修复此错误?

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

此函数调用自身,导致堆栈溢出。您应该将此函数替换为要用于判断两个对象是否等效的任何逻辑。

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