0

私は多くのサードパーティライブラリを使用する大規模なプロジェクトに取り組んでいます。この事実のために、私はいくつかのあいまいなエラーに遭遇しました。一部の関数は、グローバル名前空間および別の名前空間で定義されています。

使用する名前空間を指定するために「using」を指定できることは知っていますが、各エラーの前に「::」を付けずに、ファイルに指定する方法がわかりません。

誰かが方法を知っているか、より良い方法を持っているなら、私はすべての耳です。

バックグラウンド:

非グローバル名前空間が必要な場合は、その名前空間で「using」を使用できるため、問題にはなりません...グローバル名前空間参照で「using」を実行する方法があるかどうかに興味があります

4

2 に答える 2

1

2つの異なる名前空間の下に、同じ名前でパラメーター化された2つの関数がある場合、次のことはできません。

using namespace x;
using namespace y;

コンパイルすると、あいまいなエラーが発生するためです。

オプションは、関数の前にx::またはy::を付けるか、名前空間のスコープを設定することです。

int test( void )
{
   using namespace x;
}


int test1( void )
{
   using namespace y;
}

もちろん、これは、単一の関数で両方の名前空間を使用しない場合にのみ機能します。

更新:「グローバル」名前空間を指定する唯一の方法は、関数呼び出しの前に::を付けることです。

于 2013-02-05T22:12:18.447 に答える
1

場合によっては、ヘッダーを再配置すると役立つことがあるため、グローバル名前空間を使用するヘッダーが前面に表示されます。

于 2013-02-08T08:32:03.737 に答える