我是一名工科学生,而不是一名非常强大的程序员。我的一项任务包括使用openGL创建VR程序。我已经获得了一个广泛使用gmtl标题的模板(我真的不想重写)。该分配需要在模拟中实现一些sixense位置跟踪器硬件,但是,sixense硬件和gmtl的头部都有许多具有相同名称的类(Plane,Line等)。有什么我可以做的,既不涉及通过大量的代码和重命名的东西?
答案 0 :(得分: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
。