我正在为二叉树编写一个模板,但不明白为什么我不能从该模板中的一个函数返回 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/