如何检查类中共享指针的有效性?

时间:2018-10-09 21:36:44

标签: c++ c++11

为什么检查根的有效性会导致分段错误,并且检查指针是否为空的正确方法是什么?

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);
}

1 个答案:

答案 0 :(得分:2)

您忘记在main()中创建BST类的实例,

bst->addElement(10, 10);

在空指针上调用addElement,这是段错误的来源。代替

auto bst = std::make_shared<BST>();
bst->addElement(10, 10);