あなたが求めていることを正確に理解するのは困難でしたが、私はそれを理解したと思います.
次の宣言が与えられているかどうかを尋ねる場合:
class Mystery
{
/*...*/
private:
void DoSomething();
};
次のようなことができます:
Mystery m;
m.DoSomething();
...では、答えはノーです。クラスのコンテキスト外からprivate
メンバー関数を呼び出す (またはメンバー変数を参照する)ことはできません。private
の別のメンバー関数のみMystery
が s を呼び出すことができますprivate
。例えば:
void Mystery::Foo()
{
DoSomething(); // this would be possible if Foo() is a member of Mystery
}
編集:
クラス外からメンバーを呼び出せないだけでなくprivate
、サブクラスからメンバーを呼び出すこともできません。たとえば、これは無効です。
class Base
{
private:
void Foo() {};
};
class Child : public Base
{
public:
void Bar()
{
Foo(); // ERROR: Can't call private method of base class
}
};