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

标签 c++ templates stl set

请帮帮我

“对象.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/

相关文章:

ruby-on-rails - 抑制 Rails 3.x 的 ActionView::MissingTemplate 异常

c++ - 无法创建类模板对象

c++ - STL 容器有单元测试吗?

c++11 - 为什么没有标准的 boost::enable_if 等价物?

c++ - 通过 visual studio 2010 项目模板设置 cocos2d-x 应用程序

c++ - 是什么导致这种在 try block 展开期间抛出析构函数的奇怪行为?

c++ - 模板与类型转换

c++ - shared_ptr 和 shared_array 为引用计数器分配内存

c++ - 我可以使用 ICC 为多种 CPU 架构进行编译吗?

c++ - 使用 boost 指针会改变您的 OO 设计方法吗?