请帮帮我
“对象.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;
}
“其他对象.h”
class other_object{
...
set<OBJECT*>* m_imitatedObjects
... }
“其他对象.cpp”
m_imitatedObjects.insert(类 OBJECT 的某些实例上的指针)
-
在运行时引发错误,我认为是由于 cmp 函数没有正确定义。
该怎么办,我该如何解决这个错误?
最佳答案
bool OBJECT::operator== (const OBJECT &object) const
{
return *this == object;
}
此函数调用自身,导致 stack overflow .您应该将此函数替换为您想要用来判断这两个对象是否等效的任何逻辑。
此外,除非每个 OBJECT
有一个独特的 m_numberOfObject
值(value),你的operator<
不会创建严格的顺序。 (因为具有相同 m_numberOfObject
值但其他方面不同的两个对象都不会小于另一个。)这可能会导致您的 set
以不同于您期望的方式工作。
关于c++ - 无法将对象上的指针添加到集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11884183/