C++ 如何将常量转换为非常量

C++ 如何将常量转换为非常量,c++,data-structures,C++,Data Structures,我被赋予了以下要编写的函数 T getMinimum() const {} 我必须使用下面的helper函数 void getMinimumHelper(Node * subtree, Node * &Location) const {} 然而,我从来都不知道如何传递这样的函数。我有一个二叉搜索树类,其中一个节点是BST类的成员。我试过很多东西,比如 Node * minNode = this->Node; Node minNode = this->getMinimumH

我被赋予了以下要编写的函数

T getMinimum() const {}
我必须使用下面的helper函数

void getMinimumHelper(Node * subtree, Node * &Location) const {}
然而,我从来都不知道如何传递这样的函数。我有一个二叉搜索树类,其中一个节点是BST类的成员。我试过很多东西,比如

Node * minNode = this->Node;
Node minNode = this->getMinimumHelper(findMin, findMin);
return minNode->data;
辅助功能:

void getMinimumHelper(Node * subtree, Node * &Location) const {
    if (subtree == NULL){
        Location = NULL;
    }
    if (subtree->left == NULL){
        Location = subtree;
    }
    else{
        getMinimumHelper(subtreeRoot->left, subtree);
    }
}
但是我作为'->'的右边是非法的 当然,helper函数由于任何原因都是空的,所以它实际上不返回任何东西。我已经在这方面工作了好几个小时,没有取得任何进展,也无法解决这个问题。我还有很多类似于这样的辅助函数,我不知道该怎么做

类别:

template <class T>
class  {
private:
    class Node {
    public:
        T data;
        Node * left;
        Node * right;
        Node * parent;

        Node() :left(NULL), right(NULL), parent(NULL) {};
        Node(const T& item) {
            data = item;
            left = NULL;
            right = NULL;
            parent = NULL;
        };
    };
public:
    BST();
    BST(BST&);

    ~BST();

    bool isEmpty() const;
    bool search(const T&) const;
private:
    Node * _root;

    void getMaximumHelper(Node *, Node * &) const;
    void getMinimumHelper(Node *, Node * &) const;
};

你有什么问题?您必须编写getMinimum?我想,getMinimumHelper中的参数Node*&minLocation参数就是您获取节点*的地方,在那里可以找到最小值。将子树节点*作为第一个参数传递,在其中查找最小值,并获取节点*,作为最小值所在位置的返回,我想这就是辅助函数的设计方式。Node*minNode=新节点;此->GetMinimumHelper此->节点,minNode;返回minNode->data;是的,我知道这是我必须做的,我的问题是将参数传递到getMinimumHelper,我知道这是一个BST,因此最左边的节点应该是最小值,但是因为getMinimum是常量,我无法使用该值,只需在我的getMinimumHelper函数中尝试一个this指针,this->nodein,我想不出一个方法来改变它,所以我可以。而且,helper函数为void对我一点帮助都没有。我没有一个简单返回的最小数据成员,因此它使一切变得比必须的困难得多。新的节点是多余的。对,我们真的不知道getMinimumHelper是如何实现的!这只是一个快速训练。@user3376703,你能发布getMinimumHelper吗?仅供参考这是我的实现。它还没有写好。如果subtreeRoot==NULL{minLocation=NULL;}如果subtreeRoot->left==NULL{minLocation=subtreeRoot;}否则{getMinimumHelpersubtreeRoot->left,subtreeRoot;}节点*findMin=新节点;GetMinimumHelper此->节点,findMin;返回findMin->data;此->节点出现以下错误:'function-style cast':作为'->'运算符的右侧是非法的
template <class T>
T BinarySearchTree<T>::getMinimum() const {
    Node * minNode;
    getMinimumHelper(_root, minNode);
    return minNode->data;
};