Nested Class-Memberfunktion kann nicht auf die Funktion der einschließenden Klasse zugreifen. Warum

Bitte beachten Sie den folgenden Beispielcode:

class A
{
private:
    class B
    {
    public:
        foobar();
    };
public:
    foo();
    bar();
};

Innerhalb der Klasse A & B Implementierung:

A::foo()
{
    //do something
}

A::bar()
{
    //some code
    foo();
    //more code
}

A::B::foobar()
{
    //some code
    foo(); //<<compiler doesn't like this
}

Der Compiler markiert den Aufruf von foo () innerhalb der Methode foobar (). Früher hatte ich foo () als private Member-Funktion der Klasse A, wechselte aber zu public, vorausgesetzt, die Funktion von B kann dies nicht sehen. Natürlich hat es nicht geholfen. Ich versuche, die von A bereitgestellte Funktionalität wiederzuverwenden. Warum erlaubt der Compiler diesen Funktionsaufruf nicht? Wie ich es sehe, sind sie Teil derselben einschließenden Klasse (A). Ich dachte, das Eingabehilfenproblem für verschachtelte Klassen-Meebers zum Einschließen von Klassen in C ++ - Standards wurde behoben.

Wie kann ich erreichen, was ich versuche, ohne dieselbe Methode (foo ()) für B neu zu schreiben, wobei B in A verschachtelt bleibt?

Ich verwende den VC ++ - Compiler Version 9 (Visual Studio 2008). Danke für deine Hilfe

Antworten auf die Frage(8)

Ihre Antwort auf die Frage