标题似乎是矛盾的,也许是这样。但这是我试图在C ++ 11中解决的问题。 我正在创建一个二叉搜索树,搜索功能看起来像这样:
const node* search(char);
我已经使返回类型保持不变,因为我不希望外部函数任意更改树(我返回节点*以允许遍历),但我也在remove()
函数中使用此函数找到要删除的节点。我希望返回的值可以由remove()
成员函数修改。
显而易见的解决方案似乎是:使用非常量返回类型创建一个私有搜索函数,但这似乎不必要地延长了代码。
有没有其他方法可以做到这一点,或者实现类似的功能?
答案 0 :(得分:2)
您可以轻松地执行此操作以避免代码重复:
class foo {
public:
const node* search(char c) const { return internal_search(c); }
private:
node* internal_search(char c) const {
// actual implementation
}
};