0

我有一个使用 0.5.0.1 SDK 的项目(VS2012)。SDK 在 OVR 命名空间 (OVR::System) 下包含一个 System 类。在我写的一个类中,我使用 ::System. 这有效,并不是给我带来问题的原因。编译时出现错误 C2872: 'System': ambiguous symbol,有问题的文件是 C:....\Microsoft Visual Studio 12.0\VC\include 中的 typeinfo、xlocale 和 xiosbase。该错误表明“系统”可能是“系统”或 OVR::System。有没有解决的办法?如何在不更改文件内容的情况下获取 typeinfo、xlocale 和 xiosbase 以使用 ::System 而不是 OVR::System(我不想这样做)?

4

1 回答 1

1

using namespace OVR;指令不应该是一个问题,除非你把它写在你的指令#include之上。

对库头文件的引用应该总是在你自己的代码之前,这样就不会发生这种事情。一个例外是当库文档告诉您定义一个特定的宏来控制库行为时,在这种情况下,库被设计为与您的定义一起使用。

坏的:

using namespace OVR;
#include <typeinfo>
#include <locale>

好的:

#include <typeinfo>
#include <locale>
using namespace OVR;
于 2015-06-06T03:28:43.660 回答