假设您有以下课程
template <class T>
class BinarySearchTree {
private:
Node<T> root;
public:
Node<T>* deleteNode(T value) {
Node<T>* rootPointer = &this->root;
return deleteNode(rootPointer, value);
}
/*
Delete specific value in the root provided
*/
Node<T>* deleteNode(Node<T> *& root, T value) {
//here be magic
}
}
在没有指向Node<T>: deleteNode方法的指针的重载中,您看到我得到了指向的指针,this->root然后将其传递给实际的主力,即另deleteNode一种方法。
有没有办法做到这一点......更优雅一点?我的思考过程是我可以做到:
return deleteNode(&this->root, value);
但编译器会给我
'Node<T> *Bst<T>::deleteNode(Node<T> *&,T)': cannot convert argument 1 from 'Node<T> *' to 'Node<T> *&'
我的主要问题是,我的思维过程出了什么问题?我这样做是否正确/C++ 方式?