1

関数では、リストの値がリストの終わりであるかどうかを確認しています。

bool Graph::adjacent(const int vertex1, const int vertex2){
return (returnEdge(neighbors(vertex1), vertex2) != neighbors(vertex1).end());

この行で、neighbors はベクトルの隣接リストを返します。

std::list<Edge> Graph::neighbors(int vertex1) const {
return adjacency_list[vertex1];  // returns the list of all the edges
}

returnEdge は、そのリストにある Edge を返します。

Edge Graph::returnEdge(std::list<Edge> lista, const int vertex2){
return (*(std::find(lista.begin(), lista.end(), Edge(vertex2, 1))));
}

エラーは、ここにコピーしたコードの最初の行で発生し、次のとおりです。

no match for 'operator!=' in '((Graph*)this)->Graph::returnEdge(Graph::neighbors(int) const(vertex1), vertex2) != (&Graph::neighbors(int) const(vertex1))->std::list<_Tp, _Alloc>::end [with _Tp = Edge, _Alloc = std::allocator<Edge>]()' 

ファイルでの私の演算子のオーバーロードは次のとおりです。

bool operator!=(const Edge& e) const 
           { return (e.nextVertex != nextVertex); }

演算子のオーバーロードが間違っているか、returnEdge と neighbors().end() が同じ型の変数を返さないと思います。どうすれば修正できますか?

4

0 に答える 0