为什么检查根的有效性会导致分段错误,并且检查指针是否为空的正确方法是什么?
class Node {
public:
int key, value;
std::shared_ptr<Node> right, left;
Node(int key, int value) : key(key), value(value) {
right = nullptr;
left = nullptr;
}
};
class BST {
private:
std::shared_ptr<Node> root = nullptr;
public:
void addElement(int key, int value) {
if (root) {
}
}
};
int main() {
std::shared_ptr<BST> bst;
bst->addElement(10, 10);
}
答案 0 :(得分:2)
您忘记在main()中创建BST类的实例,
bst->addElement(10, 10);
在空指针上调用addElement
,这是段错误的来源。代替
auto bst = std::make_shared<BST>();
bst->addElement(10, 10);