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