我正在尝试重载==运算符以比较两个对象。由于某种原因,永远不会调用重载的处理程序。
class gxCallback
{
public:
virtual bool operator==(const gxCallback &aOther) const
{
// This is never called
return true;
}
};
typedef std::vector < gxCallback* > CallbackList;
void gxObservable::Fire( gxCallback *aCallback )
{
CallbackList::iterator iCallback;
for ( iCallback = mCallbacks.begin(); iCallback != mCallbacks.end(); ++iCallback )
{
if ( aCallback == *iCallback ) // The comparison is never made via the overloaded ==
{
// Do something
}
}
}
答案 0 :(得分:8)
你在指针上调用它,而不是对象。您必须将对象与迭代器引用的对象进行比较:
if (*aCallback == **iCallback)
在取消引用它们之前,你还必须确保“指针”能够保留一些内容。
答案 1 :(得分:1)
您正在比较指针而不是对象本身。