Я инженерный студент, а не очень сильный программист. Одно из моих назначений включает создание VR-программы с использованием openGL. Мне был предоставлен шаблон (который я действительно не хочу переписывать), который широко использует заголовки gmtl. Назначение требует реализации некоторого sixense оборудования для отслеживания местоположения в симуляции, однако заголовки для шестимерного оборудования и gmtl имеют несколько классов (плоскость, линия и т. Д.) С одинаковыми именами. Есть ли что-нибудь, что я могу сделать, чтобы использовать и то, и другое, не связанное с большим количеством кода и переименованием?C++ Заголовки с тем же именем класса
ответ
Как комментаторы заявили, что они находятся в разных пространствах имен, так что вы должны быть в порядке, до тех пор, как вы полностью квалифицировать ваше пространство имен, что является хорошей практикой тоже:
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;
}
на практике, если вы хорошо структурирована, модульный код, это будет очень редко, чтобы использовать два класса с тем же именем в том же исходном файле, и как правило, классы делают то же самое, что означает йо u может изолировать подробные, полностью квалифицированные имена типов в исходном файле конверсии и продолжать использовать using namespace
в других исходных файлах.
Да. Думаю, я это понимаю. Является ли разумным просто заключить весь код в шестиэлементных файлах заголовков в пространстве имен? – kballing
@kballing Нет, не принимайте чей-то код и оберните его в 'namespace foo' - это плохая идея. Удалите «использование пространства имен gmtl» из вашего кода везде. Не пытайтесь придерживаться кода someones в пространстве имен, они сами не поместили его. Никогда не добавляйте '# include' файл в блок' namespace blah {'...'} '. (ну, естественно, не всегда, но никогда не является самым простым приближением) – Yakk
- 1. XPATH элемента с тем же именем класса
- 2. Переключить с тем же именем класса
- 3. Категории Objective-C с тем же именем
- 4. Создание нескольких объектов класса с тем же именем? C++
- 5. Вызвать функцию с тем же именем, что и другая функция с тем же именем пакета
- 6. Наследовать класс с тем же пространством имен и с тем же именем класса
- 7. Переписать атрибут базового класса с @property с тем же именем
- 8. Классы с тем же именем
- 9. Python BeautifulSoup: разбор нескольких таблиц с тем же именем класса
- 10. Выбор div с jQuery с тем же именем класса
- 11. Automake и файлы с тем же именем
- 12. PHP Исключенные: методы с тем же именем
- 13. Как отслеживать объекты с тем же именем
- 14. Использование двух классов с тем же именем
- 15. не может показать конкретный ответ с тем же именем класса.
- 16. Класс с тем же именем уже существует
- 17. Ожидаемое имя класса C++ с тем же именем класса при компиляции с XCode
- 18. 2 функции с тем же именем
- 19. Как выбрать все элементы с тем же именем класса?
- 20. деклараций имени класса и переменная с тем же именем
- 21. Скрыть/показать toggle отдельные divs с тем же именем класса
- 22. Selenium - размещение нескольких элементов с тем же именем класса
- 23. Селен получить список элементов текста с тем же именем класса
- 24. Элемент класса с одним и тем же именем
- 25. Передача метода методу класса с тем же именем в ApplicationHelper
- 26. Используйте имя класса для вызова переменной с тем же именем
- 27. Вызов другой функции JQuery с тем же именем класса CSS
- 28. Как показать/скрыть divs с тем же именем класса отдельно?
- 29. гнездо и доступ ко многим класса с тем же именем
- 30. onclick регистрация для нескольких кнопок с тем же именем класса
не определены ли они в разных пространствах имен? –
Являются ли они в пространствах имен? Если это так, все должно быть в порядке. –
gmtl определенно находится в пространстве имен 'gmtl'. –