传递给函数时指针设置为NULL

时间:2016-11-10 00:56:42

标签: c++ pointers recursion tree null

我有一个名为BET的C ++类。它是二进制表达式树的类。以下是相关功能和成员数据:

class BET{
  ....
  private:
    struct BinaryNode {
      string element;
      BinaryNode *left;
      BinaryNode *right;
      BinaryNode(const string &e, BinaryNode *l = NULL, BinaryNode *r = NULL) : element(e), left(l), right(r) {}
    };
    BinaryNode *root;
    BinaryNode * clone(BinaryNode *t) const;
};

const BET & BET::operator=(const BET &rhs) {
  (*this).root = clone(rhs.root);
  return *this;
}
....
BET::BinaryNode * BET::clone(BinaryNode *t) const {
  if(t == NULL) {
    return new BinaryNode(NULL);
  }
  BinaryNode * temp = new BinaryNode(t->element);
  temp->left = clone(t->left);
  temp->right = clone(t->right);
  return temp;
}

我遇到clone()总是返回NULL BinaryNode的情况,因为rhs.root指针在传递时设置为0。我已核实rhs.rootoperator=()中的有效地址。

可能导致这种情况的原因是什么?

0 个答案:

没有答案