鱼C论坛

 找回密码
 立即注册
查看: 1903|回复: 17

c++小白求助

[复制链接]
发表于 2014-10-15 22:50:45 | 显示全部楼层 |阅读模式
20鱼币
本帖最后由 风之残月 于 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'| 意思是说在tree.h文件的第17行,将~Tree_Link作为BTree_Link的成员变量,因为~Tree_Link不符合变量命名原则,原因大概是误将析构函数~BTree_Link写为~Tree_Link。 具体原因,由于看不见第17行上下的代码,所以无法解释。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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行上下的代码,所以无法解释。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-16 01:03:00 | 显示全部楼层
TreeNode你定义了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-10-16 10:29:21 | 显示全部楼层
流行语 发表于 2014-10-16 01:03
TreeNode你定义了吗?

我在前面定义了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 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'|
  ...

这里的第七行就是所说的十七行上下的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-16 10:36:39 | 显示全部楼层
我给你问问老师的。等我啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-10-16 10:38:48 | 显示全部楼层
小彩鱼 发表于 2014-10-16 10:36
我给你问问老师的。等我啊

皮皮,说话要算数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-16 10:55:40 | 显示全部楼层
大黑鱼 发表于 2014-10-16 10:38
皮皮,说话要算数

好的   没问题,请我吃顿饭的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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();//¹¹Ô캯Êý
    ~BTree_Link(void);//Îö¹¹º¯Êý
    datatype Pre_Tree(TreeNode<datatype> * root);//Ç°Ðò±éÀú
};
应该把整个.h文件贴上来看看。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-16 12:09:02 | 显示全部楼层
支持9楼的,把代码都贴出来看看。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-10-16 12:20:58 | 显示全部楼层
仰望天上的光 发表于 2014-10-16 11:59
这段代码没有任何错误,我做了如下的小修改,可以通过编译

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

恩恩。好的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-10-16 12:22:21 | 显示全部楼层
仰望天上的光 发表于 2014-10-16 11:59
这段代码没有任何错误,我做了如下的小修改,可以通过编译

应该把整个.h文件贴上来看看。
#include <iostream>
using  namespace std;

template <class datatype>
struct  TreeNode
{
    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;
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-10-16 12:27:27 | 显示全部楼层
流行语 发表于 2014-10-16 12:09
支持9楼的,把代码都贴出来看看。

好的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-16 16:15:47 | 显示全部楼层

你什么编译器啊?我用VC6和VS2010编译都没错啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-10-16 17:49:35 | 显示全部楼层
仰望天上的光 发表于 2014-10-16 16:15
你什么编译器啊?我用VC6和VS2010编译都没错啊。

我用的 是code::blocks
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-16 20:10:30 | 显示全部楼层
code::blocks只是编译环境,编译器是mingw吧?我用mingw在code::blocks下单独编译该文件也没错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-10-16 22:51:03 | 显示全部楼层
仰望天上的光 发表于 2014-10-16 20:10
code::blocks只是编译环境,编译器是mingw吧?我用mingw在code::blocks下单独编译该文件也没错。

现在可以啦!谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

我爱鱼C论坛 该用户已被删除
发表于 2015-2-19 20:45:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 17:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表