'树'未在此范围内声明(C ++)

时间:2014-06-30 14:40:59

标签: c++ binary-search-tree

我在CodeBlocks中遇到以下错误:

  

'originalTree'未在此范围内声明

  

'otherTree'未在此范围内声明

如何修复它们?

这是我的源代码:

using namespace std;

template <class T>
class BST
{
    private:
        struct tree_node
        {
           tree_node* left;
           tree_node* right;
           T data;
        };
        tree_node* root;
    public:
        BST()
        {
           root = NULL;
        }
        ~BST()
        {
           Destroy(root);
        }
        void Destroy(tree_node* &tree)
        {
           if(tree != NULL)
           {
              Destroy(tree->left);
              Destroy(tree->right);
              delete tree;
           }
        }

        BST(const BST<T>& otherTree)
        {
           if(otherTree.root == NULL) //otherTree is empty
              root = NULL;
           else
              CopyTree(root, originalTree.root);
        }

        void CopyTree(tree_node* &copy, tree_node* originalTree)
        {
           if(originalTree == NULL)
           copy = NULL;
           else
           {
                  copy = new tree_node*;
                  copy->data = originalTree->data;
                  CopyTree(copy->left, originalTree->left);
                  CopyTree(copy->right, originalTree->right);
           }
        }

        const BST<T>& operator=(const BST<T>&)
        {
            if(this != &otherTree) //avoid self-copy
            {
               if(root != NULL)  //if the binary tree is not empty,
                                 //destroy the binary tree
               destroy(root);

               if(otherTree.root == NULL) //otherTree is empty
                  root = NULL;
               else
                  copyTree(root, otherTree.root);
            }//end else
            return *this;
        }

        bool isInTree(T);
        bool isEmpty() const { return root==NULL; }
        void print_postorder();
        void postorder(tree_node*);
        void add(T);
        void remove(T);
};

1 个答案:

答案 0 :(得分:0)

在赋值运算符中,您使用otherTree而未在任何地方声明它。在复制构造函数中,您忘记声明originalTree

这是非常基本的调试,也是编译器错误完全描述问题的极少数情况之一。如果您不尝试自己调试程序,那么您将永远不会学习。