0

我是一名工科学生,而不是一个非常强大的程序员。我的一项任务包括使用 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;
}

在实践中,如果你有结构良好的模块化代码,在同一个源文件中使用两个同名的类是非常罕见的,而且通常这些类做同样的事情,这意味着你可以隔离“转换”源文件中的详细、完全限定的类型名称,并继续using namespace在您的其他源文件中使用。

于 2013-03-15T01:02:47.710 回答