c++ - C++ 模板中不能接受返回参数

标签 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;
    }
}

有什么想法吗?

谢谢。

最佳答案

完全限定查找函数的返回类型:

Binary_Tree<T>::Node* Binary_Tree<T>::find(T* dat, Node* current){ ...

关于c++ - C++ 模板中不能接受返回参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5662938/

相关文章:

c++ - 在另一个 vector 的末尾添加一个 vector

c++ - C++ 中的二进制搜索 : Ascending + Descending Ordered Arrays

c++ - 在 C++ 接口(interface)中声明模板函数?

templates - 在velocity模板中调用java方法

c++ - 在堆上和堆栈上传递数组以运行

c++ - 您可以在引用文献中用 bitand 替换 & 吗?

c++ - 为依赖类型特化 std::hash<T>

C++编译错误:expected initializer before ‘<’ token

c++ - 如何推断模板使用的 std::bind 对象的返回类型?

c++ - 如何有序遍历 Boost.Heap 优先级队列并更新给定元素?