我一直得到[链接器错误]未定义引用`binarytree :: ~binarytree()'

时间:2013-04-01 19:29:54

标签: c++ binary-tree destructor

#ifndef BINARYTREE_H
#define BINARYTREE_H
#include <iomanip>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cmath>

using namespace std;

class binarytree
{
      private:
      struct tree
      {
             int val;
             tree *left;
             tree *right;
      };
      tree *root;
      void insert(tree *&, tree *&);
      void display(tree *) const;
      void destroy(tree *);
    public:

        binarytree()
        {root = NULL;}
        ~binarytree()
        {destroy(root);}

        void insertnode(int);
        bool search(int);
        void display() const
        { display(root); }
};

#endif // BINARYTREE_H

这是我的.h

这是我的.cpp

#include "binarytree.h" // class's header file
#include <iomanip>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cmath>

using namespace std;

void binarytree :: insertnode( int num)
{
     tree *newnode;

     newnode = new tree;
     newnode->val = num;
     newnode->left = newnode->right = NULL;
     insert(root, newnode);
     }

     void binarytree :: insert(tree *&Ptr, tree *&newnode)
     {
          if(Ptr == NULL)
                 Ptr = newnode;
                 else if( newnode->val < Ptr->val)
                 insert(Ptr->left, newnode);
                 else
                 insert(Ptr->right, newnode);
                 }

void binarytree :: destroy(tree *Ptr)
{
     if(Ptr)
     {
            if(Ptr->left)
            destroy(Ptr->left);

             if(Ptr->right)
            destroy(Ptr->right);

            delete Ptr;
            }
     }

我认为这是一个析构函数错误,但我不明白为什么。如果有语法错误或某些东西,我会觉得非常愚蠢,但我刚刚从一本书中复制这个,所以它似乎没有遗漏任何东西。任何建议都会有帮助。如果您需要任何澄清,请询问!

0 个答案:

没有答案