Мне было трудно понять, что именно вы спрашиваете, но, думаю, я понял это.
Если вы спрашиваете, если дано следующее объявление:
class Mystery
{
/*...*/
private:
void DoSomething();
};
Вы можете сделать что-то вроде этого:
Mystery m;
m.DoSomething();
... тогда ответ - нет. Вы не можете вызывать private
функции-члены (или ссылаться на private
переменные-члены) вне контекста класса. Только другая функция-член Mystery
может вызывать private
s. Например:
void Mystery::Foo()
{
DoSomething(); // this would be possible if Foo() is a member of Mystery
}
EDIT:
Вы не только не можете вызывать private
участников из-за пределов класса, вы также не можете вызывать их из подклассов. Например, это недопустимо:
class Base
{
private:
void Foo() {};
};
class Child : public Base
{
public:
void Bar()
{
Foo(); // ERROR: Can't call private method of base class
}
};