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