0

0.5.0.1 SDK を使用するプロジェクト (VS2012) があります。SDK には、OVR 名前空間 (OVR::System) の下に System クラスが含まれています。私が書いたクラスでは、::System. これは機能し、問題を引き起こしているのではありません。コンパイルすると、エラー C2872: 'System': ambiguous symbol が発生し、問題のあるファイルは C:....\Microsoft Visual Studio 12.0\VC\include の typeinfo、xlocale、および xiosbase です。エラーは、「システム」が「システム」または OVR::System のいずれかである可能性があることを示しています。これを回避する方法はありますか?ファイルの内容を変更せずに、OVR::System ではなく ::System を使用するように typeinfo、xlocale、および xiosbase を取得するにはどうすればよいですか (これはやりたくありません)。

4

1 に答える 1

1

ディレクティブのusing namespace OVR;上に記述しない限り、ディレクティブは問題になりません#include

ライブラリ ヘッダー ファイルへの参照は、この種のことが起こらないように、常に独自のコードの前に置く必要があります。1 つの例外は、ライブラリのドキュメントで、ライブラリの動作を制御するために特定のマクロを定義するように指示されている場合です。この場合、ライブラリはその定義で動作するように設計されています。

悪い:

using namespace OVR;
#include <typeinfo>
#include <locale>

良い:

#include <typeinfo>
#include <locale>
using namespace OVR;
于 2015-06-06T03:28:43.660 に答える