Geschachtelte Klasse member-Funktion nicht zugreifen können, die Funktion der umschließenden Klasse. Warum?

Siehe Beispiel-code unten:

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

Innerhalb Klasse A & B Umsetzung:

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

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

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

Den compiler-flags der Aufruf von foo() in der Methode foobar(). Früher hatte ich foo() als private-member-Funktion der Klasse A, aber geändert, um der öffentlichkeit unter der Annahme, dass B die Funktion kann es nicht sehen. Natürlich, es hat nicht geholfen. Ich bin versucht zu re-verwenden Sie die Funktionen Einer Methode. Warum macht das nicht der compiler diese Funktion aufrufen? Wie ich es sehe, Sie sind Teil der gleichen umgebenden Klasse (A). Ich dachte, das Thema Barrierefreiheit für geschachtelte Klasse meebers für umschließenden Klasse in C++ - standards gelöst wurde.

Wie kann ich erreichen, was ich versuche zu tun, ohne das neu-schreiben der gleichen Methode (foo()) für B, die halten B verschachtelt ist?

Bin ich mit VC++ compiler ver-9 (Visual Studio 2008). Danke für Eure Hilfe.

InformationsquelleAutor der Frage Rahul | 2010-06-17

Schreibe einen Kommentar