0

我正在尝试重载 == 运算符以在两个对象之间进行比较。由于某种原因,重载的处理程序永远不会被调用。

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
        }
    }  
}
4

2 回答 2

8

您是在指针上调用它,而不是在对象上。您必须将对象与迭代器引用的对象进行比较:

if (*aCallback == **iCallback)

在取消引用它们之前,您还必须确保“指针”持有一些东西。

于 2012-11-05T20:59:51.513 回答
1

您正在比较指针而不是对象本身。

于 2012-11-05T20:59:58.260 回答