-1

イテレータの find メソッドを使用して、定義したクラスのインスタンスがベクトルに既にあるかどうかを確認したいと考えています。クラスの == 演算子をオーバーロードしました。ただし、コンパイルすることはできませんでした。

ここで何が欠けていますか?

ありがとうございます。

コードのスニペットを次に示します。

vector<ContourEdgeIndexes>::iterator it = find(contourEdges.begin(),contourEdges.end(),contourEdgeCand);
        if(it != contourEdges.end()) {
            contourEdges.erase(it);
        }

compiler gives this error:
error: no matching function for call to     ‘find(std::vector<ContourEdgeIndexes>::iterator, std::vector<ContourEdgeIndexes>::iterator, ContourEdgeIndexes&)’

edit:
and here is the overloaded == operator:
bool operator == (ContourEdgeIndexes& rhs) {
    if((this->first == rhs.first) && (this->second == rhs.second))
        return true;
    else
        return false;
}
4

1 に答える 1

3

ContourEdgeIndexesメンバーとして定義されている場合、オペレーターは への定数参照を受け入れる必要があります。また、演算子自体も const である必要があります。

bool operator == (const ContourEdgeIndexes& rhs) const {
    return ((this->first == rhs.first) && (this->second == rhs.second));
}
于 2013-01-12T14:56:03.293 に答える