Функция-член вложенного класса не может получить доступ к функции включающего класса. Зачем?

Пожалуйста, посмотрите пример кода ниже:

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

В рамках реализации класса A & B:

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

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

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

Компилятор отмечает вызов функции foo () в методе foobar (). Ранее у меня была функция foo () в качестве закрытой функции-члена класса A, но я переключился на public, предполагая, что функция B не может ее видеть. Конечно, это не помогло. Я пытаюсь повторно использовать функциональность, предоставляемую методом А. Почему компилятор не позволяет этот вызов функции? На мой взгляд, они являются частью одного класса (A). Я думал, что проблема доступности для вложенных классов классов для включения класса в стандарты C ++ была решена.

Как мне добиться того, что я пытаюсь сделать, не переписывая тот же метод (foo ()) для B, который поддерживает B вложенным в A?

Я использую компилятор VC ++ версии 9 (Visual Studio 2008). Спасибо за помощь.

Ответы на вопрос(1)

Ваш ответ на вопрос