c ++中类之间的相互引用

时间:2013-03-31 00:14:56

标签: c++ circular-reference

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

2 个答案:

答案 0 :(得分:1)

这样做的方法是使用自由函数,即算法来做这些事情。否则,您的类将失去其语义。例如,您可以:

void connect_vertices(Vertex<T> v1, Vertex<T> v2, Edge<T> e) {
}

功能处理那个逻辑。

答案 1 :(得分:0)

这是你在想什么?

void Edge::setVertex(Vertex &v)
{
  myVertex = &v;
  v.myEdge = this;
}