無向グラフを操作するためのクラスを作成していますが、次のコンパイル時エラーが発生しました。
'Dictionary.EdgeCollection> .Add(TVertex、UndirectedGraph.EdgeCollection)'に最適なオーバーロードされたメソッドの一致には、いくつかの無効な引数があります
UndirectedGraph<TVertex,TEdge>.AdjacentEdgeCollection<TVertex,TEdge>
引数2:からに変換できませんUndirectedGraph<TVertex,TEdge>.AdjacentEdgeCollection<TVertex,TEdge>
問題を次の例に減らすことができます。
public class UndirectedGraph<TVertex, TEdge>
{
Dictionary<TVertex, EdgeCollection<TVertex, TEdge>> edges;
class VertexCollection<TVertex, TEdge>
{
UndirectedGraph<TVertex, TEdge> graph;
public VertexCollection(UndirectedGraph<TVertex, TEdge> graph)
{ this.graph = graph; }
public void Add(TVertex value)
{
// Argument 2: cannot convert
// from 'UndirectedGraph<TVertex,TEdge>.AdjacentEdgeCollection<TVertex,TEdge>'
// to 'UndirectedGraph<TVertex,TEdge>.AdjacentEdgeCollection<TVertex,TEdge>'
this.graph.edges.Add(value, new EdgeCollection<TVertex, TEdge>(this.graph));
}
}
class EdgeCollection<TVertex, TEdge>
{
public EdgeCollection(UndirectedGraph<TVertex, TEdge> graph) { }
}
}
TVertex
ネストされたクラスとは外部クラスとTEdge
は異なり、名前を変更する必要があるという警告が表示されることに注意してください。私はそれを行うことができますが、これはエラーには影響しません。フラグメントの目的は明確だと思いますが、どうすれば自分のやりたいことを実行でき、どこで考えがうまくいかないのでしょうか。TVertex
TEdge