オーバーロードされた 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;
プログラムは正常に動作し、find アルゴリズムを使用できます。
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 エラー 2 エラーC2040: '==': 'Corridor *' は 'const int' c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm 41 とは間接的なレベルが異なります
operator== をさまざまな方法でオーバーロードしようとしましたが、この場合は機能しません。問題を解決するために何をすべきか誰かが知っていますか?