سؤال

I just discovered that I can do this in C++, which compiles just fine (MinGW and VC++):

class A
{
private:
   void doSth();
   A* foo;
   A* bar;
};

void A::doSth()
{
  foo->bar;
}

The member field bar of foo is private. Why can I access it and should I do so?

هل كانت مفيدة؟

المحلول

In C++, private means the access is limited to the same class, not to the same object instance.

نصائح أخرى

You'll also notice that in A's methods, other instances of A's private variables may be access. Like

A::baz(A& other) {
    other.bar; // legal
}

Visibility is at the class level, not instance level.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top