我正在寫一個二叉樹模板,不明白爲什麼我不能從該模板中的我的一個函數返回節點*。返回參數不能被接受在c + +模板
代碼:
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;
}
}
有什麼想法?
謝謝。
我不是100%確定的,但我認爲你不可能真的去像這樣的ACROSS模板。創建一個使用相同模板的類。 – Andrew 2011-04-14 12:07:19