1

現在、Qt (4.7) で小さなアプリケーションを作成しています。そして、私はネストされた名前空間を次のように使用します

namespace app {
    namespace core {
        class CoreClass {...}
    }
}

私は少し怠け者なので、名前空間の開始宣言と終了宣言を保持するショートカットにシンボルを使用しています。

APP_START
    class CoreClass {...}
APP_END

シンボルは、グローバル ヘッダー ファイルで定義されます。

ここまでは順調ですね。コンパイル時に完璧に動作します。しかし、moc ジェネレーターが moc ファイルを作成するときに、名前空間の宣言が欠落し、メソッドが標準の名前空間で生成されます。シンボルを使用しない場合、すべて正常に動作します。

シンボルを再定義するQT_BEGIN_MOC_NAMESPACEと、コンパイラはすべてのインクルードで再定義警告をスローします。これは確かに機能しますが、あまり良くないと思います。

この問題のより良い解決策はありますか?

4

1 に答える 1

0

まず、mocがマクロ置換を行わない理由を見つけます。多分-私は間違っていますか?

次に、-Dパラメーターをmocに試すことができます。たぶん次のようなものです:moc "-DAPP_BEGIN = namespace app {namespace core {"

于 2011-02-27T23:42:52.277 に答える