我是一名工科学生,而不是一个非常强大的程序员。我的一项任务包括使用 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;
}
在实践中,如果你有结构良好的模块化代码,在同一个源文件中使用两个同名的类是非常罕见的,而且通常这些类做同样的事情,这意味着你可以隔离“转换”源文件中的详细、完全限定的类型名称,并继续using namespace
在您的其他源文件中使用。
于 2013-03-15T01:02:47.710 回答