У меня есть проект (VS2012), который использует SDK 0.5.0.1. SDK включает в себя класс System в пространстве имен OVR (OVR :: System). В классе, который я написал, я использую :: System. Это работает, и это не то, что дает мне проблему. Когда я компилирую, я получаю ошибку C2872: «System»: неоднозначный символ, а проблемные файлы - это typeinfo, xlocale и xiosbase в C: .... \ Microsoft Visual Studio 12.0 \ VC \ include. Ошибка говорит, что «Система» может быть либо «Система», либо OVR :: System. Есть ли способ обойти это? Как я могу заставить typeinfo, xlocale и xiosbase использовать :: System, а не OVR :: System, без изменения содержимого файлов (чего я не хочу делать)?Получение «Системы»: ошибка неоднозначного символа с использованием C++ CLI
0
A
ответ
1
Директива A using namespace OVR;
не должна быть проблемой, если вы не написали ее выше своих директив #include
.
Ссылки на файлы заголовков библиотек всегда должны появляться перед вашим собственным кодом, точно так, чтобы такого рода вещи не происходили. Единственное исключение - когда библиотечная документация говорит вам определить конкретный макрос для управления поведением библиотеки, в этом случае библиотека предназначена для работы с вашим определением.
Bad:
using namespace OVR;
#include <typeinfo>
#include <locale>
Хорошо:
#include <typeinfo>
#include <locale>
using namespace OVR;
Не используйте пространство имен с помощью ОВР; –
Добро пожаловать в переполнение стека! Предоставьте [SSCCE] (http://sscce.org). – NathanOliver
Непонятно из вашего вопроса: вы получаете ошибки компиляции в вашем файле CPP или получаете ошибки * в файлах заголовков *, когда вы включаете их из своего CPP? –