如何在另一个成员函数中修改具有常量返回类型的成员函数的返回值



标题似乎自相矛盾,也许确实如此。但这是我在第11 C++试图解决的问题。我正在创建一个二叉搜索树,搜索函数如下所示:

const node* search(char);

我已经使返回类型保持不变,因为我不希望外部函数任意更改树(我返回 node* 以允许遍历(,但我也在 remove() 函数中使用这个函数来查找要删除的节点。我希望返回的值可由 remove() 成员函数修改。

显而易见的解决方案似乎是:创建一个具有非常量返回类型的私有搜索函数,但这似乎不必要地延长了代码。

有没有其他方法可以做到这一点,或者实现类似的功能?

您可以轻松执行此操作以避免代码重复:

class foo {
public:
    const node* search(char c) const { return internal_search(c); } 
private:
    node* internal_search(char c) const { 
        // actual implementation
    } 
};

最新更新