每当我想使用C ++上的模板在二叉树上添加元素时,都会遇到此错误,并且在修复它时遇到了困难,

所以这是我的代码是Tree.c文件:

template <class Whatever>
ostream & operator << (ostream &, const TNode<Whatever> &);

template <class Whatever>
struct TNode {
    long balance;
    Whatever data;
    long height;
    TNode<Whatever>* left;
    long & occupancy;
    TNode<Whatever>* right;
    unsigned long & tree_count;

    TNode (const Whatever & element, Tree<Whatever> & theTree)
           :balance (0), data (element), height(0), left(0),
           occupancy(theTree.occupancy), right(0),
           tree_count (theTree.tree_count) {
                occupancy++;
    }

    TNode (const Whatever & element, TNode<Whatever> & parentTNode)
     : balance(0), data (element), height (0), left (0),
            occupancy(parentTNode.occupancy), right (0),
            tree_count (parentTNode.tree_count) {
              occupancy++;
    }


template <class Whatever>
unsigned long Tree<Whatever> :: Insert (const Whatever & element) {
    //check to see if the tree is empty
    if(root == NULL)
    {
         root = new TNode<Whatever>(element); //this is keep on giving me the no
                                              //matching function error
         return TRUE;
    }

    return FALSE;
}


这是我的Tree.h文件:

template <class Whatever>
struct TNode;

template <class Whatever>
class Tree {
    friend struct TNode<Whatever>;
    long occupancy;
    TNode<Whatever> * root;
    unsigned long tree_count;
    static int debug;
public:
    //here are my constructor and destructor

    unsigned long Insert (const Whatever &);


这是我的Driver.h文件:

class Student {
    friend ostream & operator << (ostream &, const Student &);
    char name[20];
    long studentnum;
public:
       //here are my constructor,copy constructor, and deconstructor


每当我尝试编译时,我都会不断收到错误消息,

Tree.c:在成员函数'long unsigned int Tree :: Insert(const Whatever&)[with Whatever = Student]中:

Tree.c:140:错误:没有匹配的函数来调用“ TNode :: TNode(const Student&)”

Tree.c:48:注意:候选者为:TNode :: TNode(const Whatever&,TNode&)[with Whatever = Student]

Tree.c:40:注意:TNode :: TNode(const Whatever&,Tree&)[with Whatever = Student]

Tree.c:31:注意:TNode :: TNode(const TNode&)

有人知道如何解决此错误吗?

最佳答案

您的两个TNode构造函数都带有两个参数。您只通过了一个。

09-12 19:23