多くの場合、2 つ以上のクラス (ヘッダー ファイルを共有している可能性が最も高いクラス) のインスタンスがポインターによって相互に参照することは自然なことです。たとえば、グラフでは、エッジはその頂点を参照する必要があり、その逆も同様です。相互参照だけは前方宣言によって行うことができますが、両方のクラスが相互に動作できること、つまり、相互のメソッドまたはフィールドを使用できることを望みます。たとえば、エッジを頂点に接続するときに、両方のポインター (エッジ-> myVertex、頂点-> myEdge) を 1 つのメソッドで割り当てることができ、いずれかのクラスのメソッドにすることができます。それを行う方法はありますか?ありがとう。
質問する
532 次
2 に答える
1
それを行う方法は、自由関数、つまりアルゴリズムを使用してそれらのことを行うことです。そうしないと、クラスのセマンティクスが失われます。たとえば、次のことができます。
void connect_vertices(Vertex<T> v1, Vertex<T> v2, Edge<T> e) {
}
そのロジックを処理する関数。
于 2013-03-31T00:21:37.747 に答える
0
これはあなたが考えていることですか?
void Edge::setVertex(Vertex &v)
{
myVertex = &v;
v.myEdge = this;
}
于 2013-03-31T00:40:57.870 に答える