私は工学部の学生で、あまり強力なプログラマーではありません。私の課題の 1 つは、openGL を使用して VR プログラムを作成することです。gmtlヘッダーを広範囲に使用するテンプレート (本当に書き直したくありません) が提供されました。割り当てには、シミュレーションでいくつかのsixense位置トラッカー ハードウェアを実装する必要がありますが、sixense ハードウェアと gmtl の両方のヘッダーには、同じ名前の多数のクラス (Plane、Line など) があります。多くのコードを実行したり、名前を変更したりすることなく、両方を使用するためにできることはありますか?
質問する
861 次
1 に答える
2
コメンターが述べているように、それらは異なる名前空間にあるため、名前空間を完全に修飾する限り、問題はありません。これも良い習慣です。
namespace foo { int value; }
namespace bar { int value; }
int main()
{
foo::value = 1;
bar::value = 2;
return 0;
}
using namespace
無謀に使用した場合にのみ問題が発生します。
namespace foo { int value; }
namespace bar { int value; }
using namespace foo;
using namespace bar;
int main()
{
value = 1; // which value is this???
return 0;
}
実際には、適切に構造化されたモジュラー コードを使用している場合、同じソース ファイルで同じ名前の 2 つのクラスを使用する必要はほとんどありません。通常、これらのクラスは同じことを行っています。冗長な完全修飾型名を「変換」ソース ファイルで使用し、他のソース ファイルで引き続き使用using namespace
します。
于 2013-03-15T01:02:47.710 に答える