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


Ошибки компилятора с C2500 по C2599

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

Внимание

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

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

Примечание.

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

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

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

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

Ошибка Сообщение
Ошибка компилятора C2500 "identifier1": "identifier2" уже является прямым базовым классом
Ошибка компилятора C2501 "идентификатор": "__declspec(описатель)" может применяться только к структуры, объединениям, классам или незначимым элементам битового поля
Ошибка компилятора C2502 "идентификатор": слишком много модификаторов доступа в базовом классе
Ошибка компилятора C2503 "class": базовые классы не могут содержать массивы нулевого размера
Ошибка компилятора C2504 "class": базовый класс не определен
Ошибка компилятора C2505 "symbol": "__declspec(описатель)" может применяться только к объявлениям или определениям глобальных объектов или статических элементов данных.
Ошибка компилятора C2506 "member": "__declspec(описатель)" нельзя применить к этому символу
Ошибка компилятора C2507 "identifier": слишком много виртуальных модификаторов в базовом классе
Ошибка компилятора C2508 "идентификатор": "__declspec(описатель1)" нельзя объединить с "__declspec(описатель2)"
Ошибка компилятора C2509 "идентификатор": функция-член, не объявленная в классе
Ошибка компилятора C2510 "идентификатор": слева от "::" должен быть классом/структурой/объединением
Ошибка компилятора C2511 "идентификатор": перегруженная функция-член не найдена в классе
Ошибка компилятора C2512 "identifier": нет подходящего конструктора по умолчанию
Ошибка компилятора C2513 '*type': переменная не объявлена до '='
Ошибка компилятора C2514 Class: класс не имеет конструкторов
Ошибка компилятора C2515 "identifier": "vtguard" может применяться только к объявлениям классов или определениям
Ошибка компилятора C2516 "class": не является юридическим базовым классом
Ошибка компилятора C2517 "идентификатор": право "::" не определено
Ошибка компилятора C2518 ключевое 'ключевое слово' недопустимо в списке базовых классов; ожидаемое class имя
Ошибка компилятора C2519 "идентификатор": атрибуты WinRT могут содержать только открытые поля
Ошибка компилятора C2520 Class: неявный конструктор недоступен для неявного преобразования
Ошибка компилятора C2521 Деструктор или метод завершения не принимает аргументы
Ошибка компилятора C2522 "идентификатор": идентификатор перегрузки нельзя использовать для "identifier1", так как он уже указан в идентификаторе2.
Ошибка компилятора C2523 "class::~identifier": несоответствие тега деструктора/завершения
Ошибка компилятора C2524 "идентификатор": деструктор или метод завершения должен иметь список параметров void
Ошибка компилятора C2525 "identifier": параметр "identifier1" имеет имя "identifier2" в базовой функции и должен соответствовать в опубликованной реализации.
Ошибка компилятора C2526 "identifier1": функция компоновки C не может возвращать класс C++ "identifier2"
Ошибка компилятора C2527 "идентификатор": DefaultOverload нельзя указать как в function1, так и в function2. Удаление одной спецификации или переименование функции во время реализации
Ошибка компилятора C2528 "идентификатор": указатель на ссылку является незаконным
Ошибка компилятора C2529 "идентификатор": ссылка на ссылку является незаконной
Ошибка компилятора C2530 "идентификатор": ссылки должны быть инициализированы
Ошибка компилятора C2531 "идентификатор": ссылка на битовое поле незаконно
Ошибка компилятора C2532 "идентификатор": недопустимый модификатор для ссылки
Ошибка компилятора C2533 "идентификатор": конструкторы не допускают возвращаемый тип
Ошибка компилятора C2534 "identifier": конструктор не может возвращать значение
Ошибка компилятора C2535 "идентификатор": функция-член уже определена или объявлена
Ошибка компилятора C2536 Является устаревшей.
Ошибка компилятора C2537 "описатель": спецификация незаконной компоновки
Ошибка компилятора C2538 Является устаревшей.
Ошибка компилятора C2539 Является устаревшей.
Ошибка компилятора C2540 неконстантное выражение как привязанное к массиву
Ошибка компилятора C2541 "идентификатор": не удается удалить объекты, которые не являются указателями
Ошибка компилятора C2542 "идентификатор": объект класса не имеет конструктора для инициализации
Ошибка компилятора C2543 ожидаемое "]" для оператора "[]"
Ошибка компилятора C2544 ожидаемое ")" для оператора "()"
Ошибка компилятора C2545 Оператор: не удается найти перегруженный оператор
Ошибка компилятора C2546 "идентификатор": если тип определен как в PIA, так и в no-PIA, необходимо сначала ссылаться на PIA.
Ошибка компилятора C2547 "идентификатор": все параметры опубликованного метода должны быть явно названы в объявлении
Ошибка компилятора C2548 "function": отсутствует аргумент по умолчанию для параметра параметра
Ошибка компилятора C2549 Определяемое пользователем преобразование не может указать тип возвращаемого значения
Ошибка компилятора C2550 "identifier": списки инициализатора конструктора разрешены только в определениях конструктора
Ошибка компилятора C2551 для типа "void *" требуется явное приведение
Ошибка компилятора C2552 "идентификатор": не агрегированные выражения не могут быть инициализированы со списком инициализатора
Ошибка компилятора C2553 Type derived_class::function: переопределение типа возвращаемой функции отличается от типа type base_class::function.
Ошибка компилятора C2554 "переменная": "constinit" допускается только в объявлении переменной с длительностью статического или потокового хранилища
Ошибка компилятора C2555 "derived_class::function": переопределение типа возврата виртуальной функции отличается и не является ковариантным от "base_class::function"
Ошибка компилятора C2556 Function1: перегруженная функция отличается только по типу возвращаемого значения от function2.
Ошибка компилятора C2557 "идентификатор": закрытые и защищенные элементы не могут быть инициализированы без конструктора
Ошибка компилятора C2558 класс "class": конструктор копирования недоступен или конструктор копирования объявлен "явным"
Ошибка компилятора C2559 "identifier": не может перегружать функцию-член без квалификатора ref-qualifier с функцией-членом с квалификатором ref-qualifier
Ошибка компилятора C2560 "identifier": не может перегрузить функцию-член с квалификатором ref-qualifier с функцией-членом без квалификатора ref-qualifier
Ошибка компилятора C2561 Function: функция должна возвращать значение
Ошибка компилятора C2562 Функция "function": "void", возвращающая значение
Ошибка компилятора C2563 Несоответствие в списке формальных параметров
Ошибка компилятора C2564 Является устаревшей.
Ошибка компилятора C2565 "identifier": квалификатор ref-qualifier является незаконным для конструкторов или деструкторов
Ошибка компилятора C2566 перегруженная функция в условном выражении
Ошибка компилятора C2567 не удается открыть метаданные в файле filename, possible_reason
Ошибка компилятора C2568 "идентификатор": не удается разрешить перегрузку функции
Ошибка компилятора C2569 "идентификатор": перечисление или объединение не может использоваться в качестве базового класса
Ошибка компилятора C2570 "идентификатор": объединение не может иметь базовые классы
Ошибка компилятора C2571 "идентификатор": виртуальная функция не может находиться в союзе "union"
Ошибка компилятора C2572 "function": переопределение аргумента по умолчанию: номер параметра
Ошибка компилятора C2573 "class": не удается удалить указатели на объекты этого типа; класс не имеет перегрузки размещения для "удаления оператора". Используйте ::d elete или добавьте оператор delete(void*)" в класс
Ошибка компилятора C2574 "function": не может быть объявлен статическим
Ошибка компилятора C2575 "идентификатор": только функции-члены и базы могут быть виртуальными
Ошибка компилятора C2576 "идентификатор": не может ввести новый виртуальный метод как "public". Попробуйте сделать метод не виртуальным или изменить специальные возможности на "внутренний" или "защищенный частный"
Ошибка компилятора C2577 "идентификатор": деструктор или метод завершения не может иметь возвращаемый тип
Ошибка компилятора C2578 Class: тип не может иметь конструктор "защищенный" или "защищенный общедоступный"
Ошибка компилятора C2579 не удается разрешить тип типа (смещение). Ожидается в имени файла
Ошибка компилятора C2580 "идентификатор": несколько версий стандартных специальных функций-членов не допускаются
Ошибка компилятора C2581 "type": статическое "оператор =" является незаконной функцией
Ошибка компилятора C2582 Функция оператора оператора недоступна в типе
Ошибка компилятора C2583 "идентификатор": "const/volatile" указатель "this" недопустим для конструкторов и деструкторов"
Ошибка компилятора C2584 "class": прямой базовый "base_class2" недоступен; уже база "base_class1"
Ошибка компилятора C2585 явное преобразование в тип неоднозначно
Ошибка компилятора C2586 неправильный синтаксис преобразования, определяемый пользователем: незаконные косвенные
Ошибка компилятора C2587 "идентификатор": незаконное использование локальной переменной в качестве параметра по умолчанию
Ошибка компилятора C2588 '::~identifier': незаконный глобальный деструктор/метод завершения
Ошибка компилятора C2589 "идентификатор": недопустимый маркер справа от "::"
Ошибка компилятора C2590 "идентификатор": только конструктор может иметь список инициализатора базового или члена
Ошибка компилятора C2591 ExclusiveTo не может использовать "type" в качестве аргумента. Допустимым аргументом является только класс ref.
Ошибка компилятора C2592 "class": "base_class2" наследуется от "base_class1" и не может быть перенаследован
Ошибка компилятора C2593 "идентификатор оператора" неоднозначно
Ошибка компилятора C2594 "operator": неоднозначные преобразования из "type1" в "type2"
Ошибка компилятора C2595 Тип атрибута WinRT "идентификатор" должен быть запечатан
Ошибка компилятора C2596 Поле атрибута WinRT "идентификатор" может быть только "общедоступным классом перечисления", "int", "unsigned int", "bool", "Platform::Type", "Platform::String" или "Windows::Foundation::HResult"
Ошибка компилятора C2597 недопустимая ссылка на нестатический элемент "идентификатор"
Ошибка компилятора C2598 Спецификация компоновки должна находиться в глобальной области
Ошибка компилятора C2599 "идентификатор": объявление пересылки управляемой или winRT перечисления не допускается

См. также

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