在c ++模板中无法接受返回参数

Cod*_*ier 1 c++ templates

我正在为二叉树编写一个模板,并且不明白为什么我不能从该模板中的一个函数返回Node*.

码:

template<class T>
class Binary_Tree{
private:
    struct Node{
        T* data;
        Node *left,*right;
        Node(T* dat, Node* l, Node* r) : data(dat),left(l=0),right(r=0) {} 
    }*root;
public:
    Binary_Tree() : root(0) {}
    Node* find(T* dat);
....
};


template<class T>
Node* Binary_Tree<T>::find(T* dat, Node* current){
    if (*current->data == *dat){
        return current;
    }else if(*current->data < *dat && current->left == 0){
        return current;
    }else if(*current->data > *dat && current->right == 0){
        return current;
    }else if (*current->data < *dat){
        find(dat,current->left);
    }else if(*current->data > *dat){
        find(dat,current->right);
    }else{
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

谢谢.

小智 5

完全限定返回类型到您的查找功能:

Binary_Tree<T>::Node* Binary_Tree<T>::find(T* dat, Node* current){ ...
Run Code Online (Sandbox Code Playgroud)