Я получаю эти два предупреждения (с 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: предупреждение: startMainLockDetector () :: MainLockDetector 'объявлен с большей видимостью, чем тип его поля' startMainLockDetector () :: MainLockDetector :: '
/ Users / az / Programmierung / openlierox / build / Xcode /../../ src / main.cpp: 154: 0 /Users/az/Programmierung/openlierox/build/Xcode/../../ src / main.cpp: 154: предупреждение: 'startMainLockDetector () :: MainLockDetector' объявлено с большей видимостью, чем его базовое 'Action'
В этом коде:
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 и т. Д.) И никогда не получал никаких предупреждений для этого кода.