大黑鱼 发表于 2014-10-15 22:50:45

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>'|

仰望天上的光 发表于 2014-10-15 22:50:46

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行上下的代码,所以无法解释。

流行语 发表于 2014-10-16 01:03:00

TreeNode你定义了吗?

大黑鱼 发表于 2014-10-16 10:29:21

流行语 发表于 2014-10-16 01:03
TreeNode你定义了吗?

我在前面定义了

大黑鱼 发表于 2014-10-16 10:30:13

仰望天上的光 发表于 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:39

我给你问问老师的。等我啊

大黑鱼 发表于 2014-10-16 10:38:48

小彩鱼 发表于 2014-10-16 10:36
我给你问问老师的。等我啊

皮皮,说话要算数{:9_220:}

小彩鱼 发表于 2014-10-16 10:55:40

大黑鱼 发表于 2014-10-16 10:38
皮皮,说话要算数

好的   没问题,请我吃顿饭的

仰望天上的光 发表于 2014-10-16 11:59:17

大黑鱼 发表于 2014-10-16 10:30
这里的第七行就是所说的十七行上下的代码

这段代码没有任何错误,我做了如下的小修改,可以通过编译
template<class T> class TreeNode;
template<class datatype>
class BTree_Link
{
public:
    BTree_Link();//&sup1;&sup1;&Ocirc;ì&ordm;&macr;&Ecirc;&yacute;
    ~BTree_Link(void);//&Icirc;&ouml;&sup1;&sup1;&ordm;&macr;&Ecirc;&yacute;
    datatype Pre_Tree(TreeNode<datatype> * root);//&Ccedil;°&ETH;ò±é&Agrave;ú
};
应该把整个.h文件贴上来看看。

流行语 发表于 2014-10-16 12:09:02

支持9楼的,把代码都贴出来看看。

大黑鱼 发表于 2014-10-16 12:20:58

仰望天上的光 发表于 2014-10-16 11:59
这段代码没有任何错误,我做了如下的小修改,可以通过编译

应该把整个.h文件贴上来看看。

恩恩。好的

大黑鱼 发表于 2014-10-16 12:22:21

仰望天上的光 发表于 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:27:27

流行语 发表于 2014-10-16 12:09
支持9楼的,把代码都贴出来看看。

好的

仰望天上的光 发表于 2014-10-16 16:15:47

大黑鱼 发表于 2014-10-16 12:27
好的

你什么编译器啊?我用VC6和VS2010编译都没错啊。

大黑鱼 发表于 2014-10-16 17:49:35

仰望天上的光 发表于 2014-10-16 16:15
你什么编译器啊?我用VC6和VS2010编译都没错啊。

我用的 是code::blocks

仰望天上的光 发表于 2014-10-16 20:10:30

code::blocks只是编译环境,编译器是mingw吧?我用mingw在code::blocks下单独编译该文件也没错。

大黑鱼 发表于 2014-10-16 22:51:03

仰望天上的光 发表于 2014-10-16 20:10
code::blocks只是编译环境,编译器是mingw吧?我用mingw在code::blocks下单独编译该文件也没错。

{:5_91:}现在可以啦!谢谢啦

我爱鱼C论坛 发表于 2015-2-19 20:45:47

页: [1]
查看完整版本: c++小白求助