Поделиться через


Ошибки компилятора с C2800 по C2899

В статьях в этом разделе документации объясняется подмножество сообщений об ошибках, создаваемых компилятором.

Внимание

Компиляторы и средства сборки Visual Studio могут сообщать о многих типах ошибок и предупреждений. После обнаружения ошибки или предупреждения средства сборки могут делать предположения о намерении кода и пытаться продолжить работу, чтобы в одно и то же время сообщалось больше проблем. Если средства делают неверное предположение, последующие ошибки или предупреждения не могут применяться к проекту. При устранении проблем в проекте всегда начинайте с первой зарегистрированной ошибки (или предупреждения) и выполняйте повторную сборку как можно чаще. Одно исправление может привести к возникновению многих последующих ошибок.

Чтобы получить справку по определенному диагностическом сообщению в Visual Studio, выберите его в окне вывода и нажмите клавишу F1 . Visual Studio открывает страницу документации для этой ошибки, если она существует. Вы также можете использовать средство поиска в верхней части страницы, чтобы найти статьи об определенных ошибках или предупреждениях. Или просмотрите список ошибок и предупреждений по инструменту и введите оглавление на этой странице.

Примечание.

Не все ошибки или предупреждения Visual Studio документируются. Во многих случаях диагностическое сообщение предоставляет все доступные сведения. Если вы приземлились на этой странице при использовании F1 , и вы думаете, что сообщение об ошибке или предупреждении требует дополнительного объяснения, сообщите нам об этом. Вы можете использовать кнопки обратной связи на этой странице, чтобы вызвать проблему документации на GitHub. Если вы считаете, что ошибка или предупреждение неправильно, или вы нашли другую проблему с набором инструментов, сообщите о проблеме продукта на сайте Сообщество разработчиков. Вы также можете отправлять отзывы и вводить ошибки в интегрированной среде разработки. В Visual Studio перейдите в строку меню и выберите "Отправить отзыв о > проблеме" или отправьте предложение с помощью справки > по отправке > отзывов > отправить предложение. Некоторые разделы об ошибках компилятора были созданы, которые не создаются компилятором и теперь перенаправляются на эту страницу.

Вы можете найти дополнительную помощь по ошибкам и предупреждениям на форумах Microsoft Learn Q&A . Или найдите номер ошибки или предупреждения на сайте Сообщество разработчиков Visual Studio C++. Вы также можете искать решения в стеке Overflow .

Ссылки на дополнительные справочные материалы и ресурсы сообщества см. в разделе справки и сообщества Visual C++.

Сообщения об ошибках

Ошибка Сообщение
Ошибка компилятора C2800 Оператор оператора не может быть перегружен
Ошибка компилятора C2801 "member" должен быть нестатичным элементом
Ошибка компилятора C2802 Статический член "оператор оператора" не имеет формальных параметров
Ошибка компилятора C2803 Оператор оператора должен иметь по крайней мере один формальный параметр типа класса
Ошибка компилятора C2804 В двоичном операторе оператора слишком много параметров
Ошибка компилятора C2805 Двоичный оператор оператора имеет слишком мало параметров
Ошибка компилятора C2806 Оператор оператора имеет слишком много формальных параметров
Ошибка компилятора C2807 второй формальный параметр для постфикса оператора должен быть int
Ошибка компилятора C2808 Унарный оператор оператора имеет слишком много формальных параметров
Ошибка компилятора C2809 Оператор оператора не имеет формальных параметров
Ошибка компилятора C2810 Interface: интерфейс может наследоваться только от другого интерфейса.
Ошибка компилятора C2811 Type1: не удается наследовать от type2, класс ссылок может наследоваться только от класса ссылок или класса интерфейса.
Ошибка компилятора C2812 #import не поддерживается с /clr:pure и /clr:safe
Ошибка компилятора C2813 директива #import не поддерживается с параметром /MP
Ошибка компилятора C2814 "member": собственный тип не может быть вложен в управляемый или winRT-тип "class"
Ошибка компилятора C2815 Оператор delete: первый формальный параметр должен иметь значение void *, но использовался тип
Ошибка компилятора C2816 Вызов макроса, например функции "идентификатор", отсутствует завершающийся ")"
Ошибка компилятора C2817 Тип возвращаемого значения для оператора delete должен быть "void"
Ошибка компилятора C2818 применение перегруженного оператора ->— рекурсивно через тип "class"
Ошибка компилятора C2819 Тип "class" не имеет перегруженного члена "оператор ->"
Ошибка компилятора C2820 Является устаревшей.
Ошибка компилятора C2821 первый формальный параметр для оператора new должен иметь значение "size_t"
Ошибка компилятора C2822 локальная очистка не поддерживается на этой платформе
Ошибка компилятора C2823 Шаблон типа или универсальный является незаконным
Ошибка компилятора C2824 Тип возвращаемого значения для оператора new должен иметь значение void *.
Ошибка компилятора C2825 "идентификатор": должен быть классом или пространством имен, за которым следует "::"
Ошибка компилятора C2826 Является устаревшей.
Ошибка компилятора C2827 Оператор оператора не может быть глобально переопределен с унарной формой
Ошибка компилятора C2828 Оператор оператора не может быть глобально переопределен с двоичной формой
Ошибка компилятора C2829 Оператор оператора не может иметь список параметров переменной
Ошибка компилятора C2830 Только параметры размещения для оператора new могут иметь значения по умолчанию
Ошибка компилятора C2831 Оператор оператора не может иметь параметры по умолчанию
Ошибка компилятора C2832 "идентификатор": ссылочный тип не может быть инициализирован со значением
Ошибка компилятора C2833 "маркер оператора" не является распознаваемым оператором или типом
Ошибка компилятора C2834 Оператор оператора должен быть глобально квалифицирован (устаревший в Visual Studio 2022.)
Ошибка компилятора C2835 Определяемое пользователем преобразование type не принимает формальных параметров
Ошибка компилятора C2836 "идентификатор": только один нестатический член данных объединения может иметь инициализатор элементов по умолчанию
Ошибка компилятора C2837 Function: не удается использовать директивы OpenMP и цикл #pragma (hint_parallel) в той же функции.
Ошибка компилятора C2838 "идентификатор": незаконное полное имя в объявлении члена
Ошибка компилятора C2839 Недопустимый тип возвращаемого типа "type" для перегруженного оператора ->"
Ошибка компилятора C2840 аргумент слова инструкции не констант
Ошибка компилятора C2841 регистр не констант
Ошибка компилятора C2842 "class": тип managed/WinRT может не определять собственный "оператор new" или "operator delete"
Ошибка компилятора C2843 "member": не может принимать адрес нестатических элементов данных или метода управляемого или winRT типа
Ошибка компилятора C2844 "идентификатор": не может быть членом интерфейса "interface"
Ошибка компилятора C2845 "type": арифметический указатель не разрешен для этого типа
Ошибка компилятора C2846 "interface": интерфейс не может иметь конструктор
Ошибка компилятора C2847 Не удается применить sizeof к типу Managed/WinRT "class"
Ошибка компилятора C2848 "class": тип managed/WinRT не может быть членом объединения
Ошибка компилятора C2849 "interface": интерфейс не может иметь деструктор
Ошибка компилятора C2850 "конструктор": разрешено только в области файла; может не находиться в вложенной конструкции.
Ошибка компилятора C2851 Перечисление "перечисление": общедоступная перечисление WinRT может использовать только int или unsigned int в качестве базового типа
Ошибка компилятора C2852 "идентификатор": только члены данных можно инициализировать в классе
Ошибка компилятора C2853 "идентификатор": нестатический член данных не может иметь тип, содержащий "auto"
Ошибка компилятора C2854 ошибка синтаксиса в #pragma hdrstop
Ошибка компилятора C2855 Параметр командной строки "option" не согласуется с предварительно скомпилированным заголовком
Ошибка компилятора C2856 #pragma hdrstop не может находиться внутри блока #if
Ошибка компилятора C2857 Инструкция "#include", указанная параметром командной строки /Yc, не найдена в исходном файле.
Ошибка компилятора C2858 параметр командной строки "/Yc (/Fd filename)" несовместим с предварительно скомпилированным заголовком, который использовал имя файла /Fd(устаревшее в Visual Studio 2022.)
Ошибка компилятора C2859 Имя файла не является файлом типа файла, который использовался при создании этого предварительно скомпилированного заголовка, повторно создайте предварительно скомпилированные заголовки.
Ошибка компилятора C2860 "void" нельзя использовать в качестве параметра функции, за исключением "(void)"
Ошибка компилятора C2861 "объявление": не удается определить функцию-член интерфейса
Ошибка компилятора C2862 "interface": интерфейс может иметь только общедоступные члены
Ошибка компилятора C2863 "interface": интерфейс не может иметь друзей
Ошибка компилятора C2864 "идентификатор": переменная статического элемента данных или шаблона с инициализатором в классе должна иметь неизменяемый целочисленный тип конста
Ошибка компилятора C2865 Оператор: незаконное сравнение указателя объекта или дескриптора
Ошибка компилятора C2866 Является устаревшей.
Ошибка компилятора C2867 "идентификатор": не является пространством имен
Ошибка компилятора C2868 "идентификатор": недопустимый синтаксис для using-declaration; ожидаемое полное имя
Ошибка компилятора C2869 "идентификатор": уже определен как пространство имен
Ошибка компилятора C2870 "идентификатор": определение пространства имен должно отображаться в области файла или непосредственно в другом определении пространства имен
Ошибка компилятора C2871 "идентификатор": пространство имен с этим именем не существует
Ошибка компилятора C2872 "идентификатор": неоднозначный символ
Ошибка компилятора C2873 "symbol": символ нельзя использовать в объявлении using
Ошибка компилятора C2874 использование объявления вызывает несколько объявлений идентификатора.
Ошибка компилятора C2875 using-declaration вызывает несколько объявлений class::identifier (устаревшее в Visual Studio 2022.)
Ошибка компилятора C2876 "class::member": не все перегрузки доступны
Ошибка компилятора C2877 "member" недоступен из класса
Ошибка компилятора C2878 "идентификатор": пространство имен или класс этого имени не существует
Ошибка компилятора C2879 "идентификатор": только существующее пространство имен может быть присвоено альтернативное имя определением псевдонима пространства имен.
Ошибка компилятора C2880 __swi или __hvc требует допустимой константы в качестве первого аргумента (номер SWI)
Ошибка компилятора C2881 "идентификатор": уже используется в качестве псевдонима для класса.
Ошибка компилятора C2882 "идентификатор": незаконное использование идентификатора пространства имен в выражении
Ошибка компилятора C2883 Function: объявление функции конфликтует с идентификатором, представленным с помощью объявления using
Ошибка компилятора C2884 "идентификатор": вводимый с использованием объявления конфликтует с локальной функцией "function"
Ошибка компилятора C2885 "class::identifier": недопустимое объявление using в области, отличной от класса
Ошибка компилятора C2886 "class::identifier": символ не может использоваться в элементе using-declaration
Ошибка компилятора C2887 __swi или __hvc не может содержать более пяти аргументов (номер SWI, r0 - r3)
Ошибка компилятора C2888 "идентификатор": символ не может быть определен в пространстве имен "пространство имен"
Ошибка компилятора C2889 "class": тип класса Managed/WinRT не может быть виртуальным базовым классом
Ошибка компилятора C2890 "class": класс ссылок может иметь только один базовый класс, отличный от интерфейса
Ошибка компилятора C2891 "parameter": не удается принять адрес параметра шаблона
Ошибка компилятора C2892 Локальный класс не должен иметь шаблоны элементов
Ошибка компилятора C2893 Не удалось специализировать шаблон функции "template"
Ошибка компилятора C2894 шаблоны не могут быть объявлены для связывания "C"
Ошибка компилятора C2895 "объявление": не удается явно создать экземпляр шаблона функции, объявленного с помощью dllimport
Ошибка компилятора C2896 Function1: не удается использовать шаблон функции или универсальный аргумент function2 в качестве аргумента функции (устаревшее в Visual Studio 2022.)
Ошибка компилятора C2897 Деструктор или метод завершения не может быть шаблоном функции
Ошибка компилятора C2898 Объявление: шаблоны функций-членов не могут быть виртуальными
Ошибка компилятора C2899 Является устаревшей.

См. также

Компилятор C/C++ и средства сборки ошибок и предупреждений
Ошибки компилятора C2000 — C3999, C7000 — C7999