c++小白求助
本帖最后由 风之残月 于 2014-11-9 22:38 编辑template<class datatype>
class BTree_Link
{
public:
BTree_Link();//构造函数
~BTree_Link(void);//析构函数
datatype Pre_Tree(TreeNode<datatype> * root);//前序遍历出现如此错误
D:\数据结构C++版\树的实现\tree.h|17|error: declaration of '~Tree_Link' as member of 'BTree_Link<datatype>'|
D:\数据结构C++版\树的实现\tree.h|17|error: declaration of '~Tree_Link' as member of 'BTree_Link<datatype>'|
意思是说在tree.h文件的第17行,将~Tree_Link作为BTree_Link<datatype>的成员变量,因为~Tree_Link不符合变量命名原则,原因大概是误将析构函数~BTree_Link写为~Tree_Link。
具体原因,由于看不见第17行上下的代码,所以无法解释。 TreeNode你定义了吗? 流行语 发表于 2014-10-16 01:03
TreeNode你定义了吗?
我在前面定义了 仰望天上的光 发表于 2014-10-16 08:35
D:\数据结构C++版\树的实现\tree.h|17|error: declaration of '~Tree_Link' as member of 'BTree_Link'|
...
这里的第七行就是所说的十七行上下的代码 我给你问问老师的。等我啊 小彩鱼 发表于 2014-10-16 10:36
我给你问问老师的。等我啊
皮皮,说话要算数{:9_220:} 大黑鱼 发表于 2014-10-16 10:38
皮皮,说话要算数
好的 没问题,请我吃顿饭的 大黑鱼 发表于 2014-10-16 10:30
这里的第七行就是所说的十七行上下的代码
这段代码没有任何错误,我做了如下的小修改,可以通过编译
template<class T> class TreeNode;
template<class datatype>
class BTree_Link
{
public:
BTree_Link();//¹¹Ô캯Êý
~BTree_Link(void);//Îö¹¹º¯Êý
datatype Pre_Tree(TreeNode<datatype> * root);//Ç°Ðò±éÀú
};
应该把整个.h文件贴上来看看。 支持9楼的,把代码都贴出来看看。 仰望天上的光 发表于 2014-10-16 11:59
这段代码没有任何错误,我做了如下的小修改,可以通过编译
应该把整个.h文件贴上来看看。
恩恩。好的 仰望天上的光 发表于 2014-10-16 11:59
这段代码没有任何错误,我做了如下的小修改,可以通过编译
应该把整个.h文件贴上来看看。
#include <iostream>
usingnamespace std;
template <class datatype>
structTreeNode
{
datatype data;
TreeNode<datatype> * left,* right;
};
template<class datatype>
class BTree_Link
{
public:
BTree_Link();//构造函数
~BTree_Link();//析构函数
datatype Pre_Tree(TreeNode<datatype> * root);//前序遍历
datatype Mid_Tree(TreeNode<datatype> * root);//中序遍历
datatype Las_Tree(TreeNode<datatype> * root);//后续遍历
datatype Lev_Tree(TreeNode<datatype> * root);//层序遍历
private:
TreeNode<datatype> *root;
TreeNode<datatype> * Creat(); //创建节点
void Relse(TreeNode<datatype> *root); //删除节点
};
template<class datatype>
BTree_Link<datatype> ::BTree_Link() //构造函数
{
root = Creat();
}
template<class datatype>
BTree_Link<datatype>::~BTree_Link() //析构函数
{
Relse(root);
}
template<class datatype>
datatype BTree_Link<datatype> :: Pre_Tree(TreeNode<datatype> * root) //递归算法 前序遍历
{
if (root == NULL)
return 0;
else
{
cout << root.data<<endl;
Pre_Tree(root.left);
Pre_Tree(root.right);
}
}
template<class datatype>
datatype BTree_Link<datatype>::Mid_Tree(TreeNode<datatype> *root) //中序遍历 递归算法
{
if (root == NULL)
return 0;
else
{
Mid_Tree(root.left);
cout << root.data;
Mid_Tree(root.right);
}
}
template <class datatype>
datatype BTree_Link<datatype>::Las_Tree(TreeNode<datatype> *root)//后续遍历
{
if (root == NULL)
return 0;
else
{
Las_Tree(root.left);
Las_Tree(root.right);
cout<<root.data;
}
}
template<class datatype>
void BTree_Link<datatype>::Relse(TreeNode<datatype> * root) //删除节点
{
if (root != NULL)
{
Relse(root->left);
Relse(root->right);
delete root;
}
}
template<class datatype>
TreeNode<datatype> * BTree_Link<datatype>::Creat() //创建一颗二叉树
{
datatype ch;
TreeNode<datatype> *root;
cin>>ch;
if (ch =='#')
root = NULL;
else
{
root = new TreeNode<datatype>;
root->data = ch;
root->left = Creat();
root->right = Creat();
}
return root;
}
流行语 发表于 2014-10-16 12:09
支持9楼的,把代码都贴出来看看。
好的 大黑鱼 发表于 2014-10-16 12:27
好的
你什么编译器啊?我用VC6和VS2010编译都没错啊。 仰望天上的光 发表于 2014-10-16 16:15
你什么编译器啊?我用VC6和VS2010编译都没错啊。
我用的 是code::blocks code::blocks只是编译环境,编译器是mingw吧?我用mingw在code::blocks下单独编译该文件也没错。 仰望天上的光 发表于 2014-10-16 20:10
code::blocks只是编译环境,编译器是mingw吧?我用mingw在code::blocks下单独编译该文件也没错。
{:5_91:}现在可以啦!谢谢啦
页:
[1]