我在其中创建了一些带有重载 operator== 的对象。
class Corridor
{
public:
Corridor(int iStart, int iEnd);
~Corridor();
// Overloaded operators to simplify search in container.
friend bool operator==(const Corridor& lhs, const int rhs);
friend bool operator==(const int lhs, const Corridor& rhs);
protected:
int m_iIntersectionIDStart;
int m_iIntersectionIDEnd;
};
在这种情况下,如果我在某处创建走廊矢量:
vector<Corridor> m_vCorridors;
程序工作正常,我可以使用查找算法:
auto itCorridor = find(m_vCorridors.begin(), m_vCorridors.end(), someID);
但是如果我创建指针向量:
vector<Corridor*> m_vCorridors;
我收到一个错误:错误 1 错误 C2446: '==' : no conversion from 'const int' to 'Corridor *' c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm 41 Error 2 error C2040:“==”:“走廊 *”与“const int”c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm 41 的间接级别不同
尝试以不同的方式重载 operator== ,但它不适用于这种情况。有人知道我应该怎么做才能解决问题吗?