我正在尝试重载==运算符来比较两个对象.由于某种原因,永远不会调用重载的处理程序.
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)
你是在指针而不是对象上调用它.您必须将对象与迭代器引用的对象进行比较:
if (*aCallback == **iCallback)
Run Code Online (Sandbox Code Playgroud)
在取消引用它们之前,您还必须确保"指针"保留某些内容.
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |