C ++: предупреждение: '…' объявлено с большей видимостью, чем тип его поля '… :: <anonymous>'

Я получаю эти два предупреждения (с GCC 4.2 на MacOSX):

/Users/az/Programmierung/openlierox/build/Xcode/../../src/main.cpp:154:0 /Users/az/Programmierung/openlierox/build/Xcode/../../src/main .cpp: 154: warning: 'startMainLockDetector () :: MainLockDetector' объявлен с большей видимостью, чем тип его поля 'startMainLockDetector () :: MainLockDetector :: <anonymous>'

/Users/az/Programmierung/openlierox/build/Xcode/../../src/main.cpp:154:0 /Users/az/Programmierung/openlierox/build/Xcode/../../src/main .cpp: 154: предупреждение: startMainLockDetector () :: MainLockDetector объявлено с большей видимостью, чем его базовое действие

В этом коде:

struct Action {
    virtual ~Action() {}
    virtual int handle() = 0;
};


static void startMainLockDetector() {
    /* ... */

    struct MainLockDetector : Action {
         bool wait(Uint32 time) { /* ... */ }
         int handle() { /* ... */ }
    };

    /* ... */
}

Я не совсем уверен, что означают эти предупреждения (какая видимость?) И как их исправить. (Я действительно хочу, чтобы класс MainLockDetector был локальным только для этой функции.)

Я уже скомпилировал тот же код со многими другими компиляторами (clang, GCC 3. *, GCC 4.0, GCC 4.4 и т. Д.) И никогда не получал никаких предупреждений для этого кода.

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

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