C++构造函数分段错误


BST() {
root = new BST();
right = NULL;
left = NULL;
};
private:
BST *right, *left;
BST *root;
main:
BST bst1; 

分段故障:11构造函数是否进入了一个无限循环?我曾经尝试过静态变量调用构造函数,但并没有成功。如何处理?

在此声明中

BST bst1;

被称为类BST的默认构造函数,它在自身内部再次在该语句中调用自己

root = new BST();

所以你有无限的构造函数递归调用。

你的BST声明毫无意义。

至少像一样声明

class BST
{
private:
struct Node
{
Node *left  = nullptr;
Node *right = nullptr;
// some data member for stored data
} *root = nullptr;
public:
BST() = default;
// other declarations
};

尝试将root设置为nullptr,而不是创建新的BST对象。然后在需要时初始化它。

最新更新