C++ ファイル内のクラスについて疑問に思います。「ノード」という名前のクラスと「エッジ」という名前のクラスがあります。このクラス ノードには、次のようなメソッドがあります。
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はシステムから解放されたのですか?? これを行わないようにするにはどうすればよいですか?
アレックス