0

私は工学部の学生で、あまり強力なプログラマーではありません。私の課題の 1 つは、openGL を使用して VR プログラムを作成することです。gmtlヘッダーを広範囲に使用するテンプレート (本当に書き直したくありません) が提供されました。割り当てには、シミュレーションでいくつかのsixense位置トラッカー ハードウェアを実装する必要がありますが、sixense ハードウェアと gmtl の両方のヘッダーには、同じ名前の多数のクラス (Plane、Line など) があります。多くのコードを実行したり、名前を変更したりすることなく、両方を使用するためにできることはありますか?

4

1 に答える 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 に答える