0

很多时候,两个或多个类的实例(最有可能共享一个头文件的类)通过指针相互引用是很自然的。例如,在一个图中,一条边需要引用它的顶点,反之亦然。单独的相互引用可以通过前向声明来完成,但我希望两个类可以相互操作,即使用彼此的方法或字段。例如,我希望在将边连接到顶点时,两个指针(edge->myVertex,vertex->myEdge)可以在一个方法中分配,该方法可以是任一类。有办法吗?谢谢。

4

2 回答 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 回答