現在、Qt (4.7) で小さなアプリケーションを作成しています。そして、私はネストされた名前空間を次のように使用します
namespace app {
namespace core {
class CoreClass {...}
}
}
私は少し怠け者なので、名前空間の開始宣言と終了宣言を保持するショートカットにシンボルを使用しています。
APP_START
class CoreClass {...}
APP_END
シンボルは、グローバル ヘッダー ファイルで定義されます。
ここまでは順調ですね。コンパイル時に完璧に動作します。しかし、moc ジェネレーターが moc ファイルを作成するときに、名前空間の宣言が欠落し、メソッドが標準の名前空間で生成されます。シンボルを使用しない場合、すべて正常に動作します。
シンボルを再定義するQT_BEGIN_MOC_NAMESPACE
と、コンパイラはすべてのインクルードで再定義警告をスローします。これは確かに機能しますが、あまり良くないと思います。
この問題のより良い解決策はありますか?