错误:调用'TNode<Student>::TNode<const Student&)'没有匹配函数

error: no matching function for call to 'TNode<Student>::TNode<const Student&)'

本文关键字:TNode lt Student 函数 调用 错误 gt const      更新时间:2023-10-16

每当我想使用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&)[withWhatever=Student]:

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

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

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

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

有人知道如何修复这个错误吗??

两个TNode构造函数都接受两个参数。你只通过了一个。