我想知道我的 C++ 文件中的类。我确实有一个名为“node”的类和一个名为“edge”的类。在此类节点中是这样的方法:
Edge calculateEdgeTo(Node&);
然后是具有以下操作的主文件:
Node* n1 = new Node(...);
Node* n2 = new Node(...);
delete n1;
delete n2;
这有效..但如果我:
Node* n1 = new Node(...);
Node* n2 = new Node(...);
Edge e = n1->calculateEdgeTo(*n2);
delete n1;
delete n2;
我遇到了分段错误(我认为 n1 已经被释放)。如果我尝试在 n1 上执行其他操作,它也不起作用......总是一个分段错误。
编辑:
这是函数的代码:
Edge Node::calculateEdgeTo(Node& node){
return new Edge((*this), (*this));
}
和边缘的构造函数:
Edge::Edge(const Node& src, const Node& tar){
this->src = &src;
this->tar = &tar;
}
而 src 和 tar 是节点上的指针。
编辑结束。
为什么 n1 从系统中释放出来?我怎么能强迫它不这样做?
亚历克斯