比较没有数据成员的对象指针

时间:2015-06-04 10:52:19

标签: c++ comparator

我有以下主题观察设计

package com.foo.core; 
@Stateless
public class MyFacade { }

在上面的代码中,Observor类由希望注册到Subject的所有类继承。在函数removeObservor中,当我尝试创建迭代器时出现编译错误。向我建议的解决方案是实现比较器(即<)。但是Observor类没有数据成员。我的比较器基于什么?

我想到的解决方案是使用每个observor派生类的typeid(即Derived1,Derived2)。但是,只有在集合中只存在每个派生类的一个对象时,此解决方案才有效。由于我可能有多个相同对象类型的实例,我仍然坚持如何继续

1 个答案:

答案 0 :(得分:1)

我猜测错误是iterator是一个依赖类型名称。 将typename添加到迭代器变量说明的前面,甚至更好地使用auto

例如

typename boost::unordered_set<Observor<Data> * > ::iterator itr =
    _observors.find(observor);

auto itr = _observors.find(observor);