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函数没有正确定义.
怎么做,我该如何解决这个错误?
bool OBJECT::operator== (const OBJECT &object) const
{
return *this == object;
}
Run Code Online (Sandbox Code Playgroud)
此函数调用自身,导致堆栈溢出.您应该使用您想要使用的任何逻辑来替换此函数,以判断这两个对象是否相同.
此外,除非每个OBJECT都具有唯一m_numberOfObject值,否则您operator<不会创建严格的订购.(因为具有相同m_numberOfObject值但两个不同的两个对象都不会比另一个小.)这可能会导致您set的工作方式与您的预期不同.