首页 > 解决方案 > 是否可以将某些函数参数设为对象外部私有但内部可访问?

问题描述

我不知道你是否必须为同一个任务使用不同的函数,但是否可以在 c++ 中做类似的事情,但是以另一种方式?

void foo(int n , private Bar *bar) {}

我打算将递归函数编码到一个对象中,但不希望在对象之外可以访问某些参数。

标签: c++recursion

解决方案


你可以这样做:

struct Moo {
    static void foo(int n);
private:
    static void foo(int n,Bar* bar);
};

我不喜欢只有静态方法的类(原因超出了这个问题的范围),但这是最简单的得到你想要的东西。foo(int)是公共的,另一个重载是私有的(并且只能从 调用foo(int))。

或者,代替Bar参数,制作foo成员Bar并使用私有成员代替参数:

struct Bar {
    void foo(int n);
private:
    // state, ie anything that you would have passed as argument to foo
};

推荐阅读