È legale e Settings::iterator
e Settings::const_iterator
sono accessibili a tutti gli utenti della classe Settings
.
Il controllo di accesso in C++ si applica esclusivamente ai nomi. C'è una nota e un esempio in ISO/IEC 14882: 2011 11 [class.access]/4 che chiarisce che questa è l'intenzione.
[...] [Nota: Perché il controllo di accesso si applica ai nomi, se il controllo di accesso è applicato ad un nome typedef, solo l'accessibilità del nome typedef stesso è considerato. L'accessibilità dell'entità a cui fa riferimento il typedef non è considerata. Ad esempio,
class A {
class B { };
public:
typedef B BB;
};
void f() {
A::BB x; // OK, typedef name A::BB is public
A::B y; // access error, A::B is private
}
- fine nota]
fonte
2011-12-03 08:55:38