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 и т. Д.) И никогда не получал никаких предупреждений для этого кода.