次の 2 つの警告が表示されます (MacOSX 上の GCC 4.2 を使用):
/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::<anonymous>' のタイプよりも優れた可視性で宣言されました
/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 など) で同じコードをコンパイルしましたが、このコードに関する警告は一度もありませんでした。