Рейтинг:
12
Jochen Arndt
Это означает, что у вас есть одни и те же объявления шаблонов в разных файлах include, которые все включены в один исходный файл.
Трудно помочь, не видя, какие файлы включены в исходный файл, генерирующий ошибки, и где эти файлы расположены.
Но ошибка
error C2382: 'std::operator >=': redefinition; different exception specifications
содержит подсказку: это не только переопределение, но и другое объявление (относительно исключений). Это может указывать на то, что вы включаете заголовки из разных версий SDK / VS или (сторонних) заголовочных файлов, содержащих одни и те же определения (например, с условными обозначениями, но не обнаруживаете VS 2017).
Шаблоны из ошибок определяются в
строка заголовочный файл (без
.ч расширение). Поэтому вы должны проверить, включено ли это в новую версию SDK / VS, и поискать в других включенных файлах те же определения.
[РЕДАКТИРОВАТЬ]
Цитирование комментария:
и я использовал VS2017 version include file only (xstring), который содержит эти объявления шаблонов.
Никогда не включать
xstring. Включать
строка вместо.
xstring это специфический (нестандартный) заголовочный файл MS / VS, который включен
строка.
[/РЕДАКТИРОВАТЬ]
Naveen_vemuri
Это заголовочные файлы в файле. cpp.
#include "stdafx.h" ->in this included crt header files.
#включить & lt;вектор>
код #include "mystring совсем.ч"--&ГТ;(ошибка, возникающая в этом заголовочном файле)
и я использовал VS2017 version include file only (xstring), который содержит эти объявления шаблонов.
Jochen Arndt
Смотрите мой обновленный ответ.
Naveen_vemuri
извините, небольшая поправка.
Я не включал "xstring" напрямую.Но когда я проверил, где находится определение шаблона, то обнаружил, что оно находится в <xstring>, То есть оно относится к <xstring>.Я не понимаю, как он относится к этому.
даже после объявления #include & lt;string & gt; шаблон ссылается на определение в <xstring>.
Как я могу заставить его ссылаться на "строку"?
Jochen Arndt
То строка заголовочный файл включает в себя xstring заголовочный файл. Это нормально и должно остаться.
Но вы должны проверить, есть ли другие заголовочные файлы, содержащие те же объявления для std::basic_string. Возможно, вам придется проверить все файлы (то есть проверить все файлы, включенные в mystring.h и для каждого файла проверьте включенные и так далее). Вам также нужно проверить, какая версия (путь) установлена, если вы установили несколько версий SDK / VS.
Что вы можете попробовать, так это прокомментировать включение строка Если он затем компилируется, то шаблоны присутствуют из другого включаемого файла. Но вам, наконец, нужно найти это и исключить его, потому что строка это тот, который вы хотите использовать.
Существует хитрость, чтобы найти файл:
Создайте переменную типа std:: basic_string где-нибудь в вашем коде (удалите ее после выполнения следующих действий). Щелкните правой кнопкой мыши на "basic_string "и выберите"Перейти к объявлению". Затем следует открыть соответствующий заголовочный файл, сообщающий вам также путь (если у вас есть несколько файлов для выбора, возможно, у вас уже есть то, что вы ищете).
Naveen_vemuri
Спасибо, решил мою проблему