実行時に、このコードが実行されている間にnullptr例外が発生しています。デバッガを投げるnullptr例外nullptr中にチェックする
bool Tree::Insert(int n)
{
if (root == nullptr) // This is where it throws
{
Node* root = new Node(n);
return true;
}
Tree.h
private:
Node* root;
とツリーのコンストラクタで初期化。
Tree::Tree()
{
root = nullptr;
}
私は以前とまったく同じようにコード化しており、例外は発生しませんでした。
UPDATE: 私は余分な '}' の木::挿入()上の混乱をお詫び申し上げます。より多くのコードがあり、それらはすべてリターン・ケースを持っています。私は前にこれを持っていた。
Node* newNode = new Node(n);
root = newNode;
しかし、別の理由でそれを変更した。
Node.h
#pragma once
struct Node
{
int data;
Node *left;
Node *right;
// Constructor
Node() { data = 0; left = nullptr; right = nullptr; }
// Parameterized
Node(int d) { data = d; left = nullptr; right = nullptr; }
// Destructor
~Node() { data = 0; }
};
してください、最小限の完全かつ検証可能な例を提供します。https://stackoverflow.com/help/mcve –
ないすべてのパスがツリー 'に戻る:: Insert'を、それはところであなたは新しい'ルートを定義している未定義の動作 – Danh
です'新しいスコープ内で変数を変更し、クラス変数をシャドーイングします。 – pinkfloydx33