重载运算符==但它没有被调用(比较指针?)

Izh*_*aki 0 c++

我正在尝试重载==运算符来比较两个对象.由于某种原因,永远不会调用重载的处理程序.

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
        }
    }  
}
Run Code Online (Sandbox Code Playgroud)

chr*_*ris 8

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

if (*aCallback == **iCallback)
Run Code Online (Sandbox Code Playgroud)

在取消引用它们之前,您还必须确保"指针"保留某些内容.