ich den folgenden Code habe:C++: öffentliches Mitglied eines privaten geschachtelte Klasse Typ
class Base
{
private:
class NestedBase
{
public:
void Do() {}
};
public:
NestedBase nested;
};
int main()
{
Base b;
b.nested.Do(); // line A compiles
Base::NestedBase instance; // line B doesn't compile
}
NestedBase
Klasse ist eine private geschachtelte Klasse von Base
, so ist es natürlich, dass Linie scheint B nicht kompiliert. Andererseits hat Variable b
das öffentliche Element nested
, und ich kann ihre Methode Do()
von außerhalb von Base
(wie in Zeile A) aufrufen. Welche genauen Regeln regeln den Zugriff auf die private geschachtelte Klasse (oder ihre Mitglieder) in einem solchen Fall? Was sagt der Standard dazu?
Ich denke, 'Basis :: nested' von' Base' _public_ Mitglied werden müssen. @Vlad, meinst du das? – dyomas