gpt4 book ai didi

c++ - 重载 operator== 但它没有被调用(比较指针?)

转载 作者:太空宇宙 更新时间:2023-11-04 14:56:09 28 4
gpt4 key购买 nike

我正在尝试重载 == 运算符以比较两个对象。由于某种原因,重载的处理程序从未被调用。

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

最佳答案

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

if (*aCallback == **iCallback)

在取消引用之前,您还必须确保“指针”包含某些内容。

关于c++ - 重载 operator== 但它没有被调用(比较指针?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13240263/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com