我在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* ©, 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);
};
答案 0 :(得分:0)
在赋值运算符中,您使用otherTree
而未在任何地方声明它。在复制构造函数中,您忘记声明originalTree
。
这是非常基本的调试,也是编译器错误完全描述问题的极少数情况之一。如果您不尝试自己调试程序,那么您将永远不会学习。