2012-08-09 68 views
0

请帮助我。不能在对象上添加指针

“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; 
} 

“other_object.h”

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

“other_object.cpp”

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

引发错误在运行时,如我认为由于cmp功能没有正确定义。

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

回答

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

该函数调用自身,导致stack overflow。你应该用你想用来判断这两个对象是否等价的逻辑来替换这个函数。

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

+0

谢谢!现在我看到这是问题所在。请告诉我如何比较两个实例的地址,我需要知道它们是不是同一个对象 – 2012-08-09 13:14:27

+1

@spin_eight:如果你真的想比较它们是否字面上完全一样的对象,那么可以使用'return this ==&object;'。 – 2012-08-09 13:15:17

+0

非常感谢你 – 2012-08-09 13:18:04